如何在THRE.js上更改参数时自动更新网格
How to automatically update a mesh on changing parameters on THREE.js
我是Threejs和javascript的新手。我正在构建一个基于json参数对象的网格,它非常有效。
现在我添加了一些UI组件(按钮、滑块等)来更改json并重建网格。我正在写一些猴子代码,我相信它是可以避免的。现在我的东西工作正常,但我相信这个问题可以更优雅地解决。
这是我的实际工作流程:
- 在滑块更改时使用回调
- 该回调调用setter
- setter更改JSON参数并重建网格
我相信所有这些都可以通过简单地更改JSON和一些javascript魔术来实现自动化。
这是实际的伪代码:
sliderWidth.onChange( function(newValue) {
MyObject3D.setWidth(newValue);
});
这是我的MyObject3D
:
var MyObject3D = function(parameters) {
this.parameters = parameters;
this.init();
};
MyObject3D.prototype.init = function() {
var geometry = this.initGeometry();
var material = new THREE.MeshPhongMaterial( { color: this.parameters.color, shading: THREE.FlatShading } );
this.mesh = new THREE.Mesh(geometry, material);
}
MyObject3D.prototype.setWidth = function(n) {
this.parameters.width = n;
scene.remove( this.mesh );
this.init();
scene.add( this.mesh );
}
我确信,有了javascript的高度通用性和所有全新的框架,这段代码可以很容易地实现自动化。我主要研究了d3.js和angular.js。特别是d3.js似乎与enter-update-exit
范式完美结合(但我没有找到将其与Three.js共轭的标准方法),angular肯定是其中的一部分。
任何关于结构、模式、特定用例或基于上述THRE.js、d3.js、angular.js框架之一的示例的建议都可能具有启发性。事实上,我更喜欢有angular.js的解决方案…
有一次关于使用three.js和angular.js的精彩演讲,它正好展示了您的问题。
https://www.youtube.com/watch?v=mCIZoLaPJxM&t=8m5s
我使用角度指令来监视特定的属性,然后在我的项目中执行一些逻辑更改。
$scope.$watch($attrs.something, function(changedSomething){
doSomeLogicWith(changedSomething);
});
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- 使用Express捕获参数
- 参数变量出现ngTable指令问题
- 剑道网格jQuery动画()问题
- AngularJS:我可以跳过函数参数回调吗
- 使用Dnamics CRM 2011中的JavaScript读取子网格的所有记录,而不考虑活动页面
- 如何使用skip参数使用angular ui引导进行服务器端分页
- 要求未定义JS回调参数
- 我的jQuery插件参数没有正确启动,遇到了问题
- 如何在url.action.NETMVC中从剑道网格发送参数令牌
- 如何在THRE.js上更改参数时自动更新网格
- 剑道 UI 网格扩展筛选器参数
- 使用 colModel 网格参数获取占位符的值
- 如何使用Magento创建点击集参数网格
- 使用参数在AngularJS ui网格中创建锚点
- 剑道ui网格查询参数
- 修改JSXGraph网格默认参数
- 如何在jqgrid中清除网格参数?
- 剑道Ajax网格参数与.net
- 持久化其他数据源.在剑道数据网格中读取分页参数