访问Object3D使用OBJMTLLoader加载
Access Object3D loaded using OBJMTLLoader
我正在构建一个允许用户以obj/mtl格式上传3D模型的应用程序。管理员将在查看器中显示加载对象的预览。我想为用户提供设置加载对象的初始y位置和相机的初始z位置的控件。我把相机部分搞定了,但y轴位置不行。我的代码:
var obj3d;
loader.load( model_obj, model_mtl, function ( object ) {
object.position.y = y_init;
scene.add( object );
render();
obj3d = object;
$('#initial_y').change(function() {
obj3d.position.y = $(this).val();
});
}, onProgress, onError );
问题似乎是,一旦我在load
函数之外,对Object3D
的引用就不再可用。上面的代码给出一个javascript错误:
Cannot access property 'position' of undefined.
任何帮助都非常感谢!
@mrdoob的评论让我自己解决了这个问题。当jquery回调被触发时,我的变量obj3d
确实超出了范围。我可以通过将变量声明移动到全局作用域来解决这个问题。
此外,我没有看到立即在three.js场景中应用的更改的原因是因为我需要调用render()
函数。
$('#initial_y').change(function() {
obj3d.position.y = $(this).val();
render();
});
希望这将帮助别人。谢谢你给我指了正确的方向!
我不确定,但我认为您需要使用obj3d = object.clone()
,因为稍后您的对象将被销毁。
相关文章:
- 如何使用url加载程序在webpack中导入多个图像
- 如何在生成下载文件时显示加载动画
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- 无法在通过jQuery的ajax加载的页面中执行javascript
- Emberjs应用程序加载在除Index之外的所有路由上
- 在chrome.tabs.onCreated之后加载HTML页面
- 单击F5时如何停止页面加载
- HTML5音频加载和播放获胜'我不能在iPad上工作
- 跟踪在页面加载时应用内联样式的JavaScript
- 在使用Polymer'加载所有json文件后执行方法;s的核心ajax
- jQuery Lazy加载动画滚动
- Html页面上的多个Base64图像和平滑加载
- 如何创建带有插槽的vue js组件预加载程序
- Webpack/Rect:遵循egghead.io教程,但出现错误:您可能需要一个合适的加载程序来处理此文件类型
- 三个js进度加载OBJMTLLoader
- 访问Object3D使用OBJMTLLoader加载
- 通过OBJMTLLoader加载对象上的多个材料
- 如何为THREE添加着色器.Object3D从OBJMTLLoader加载
- OBJMTLLoader没有't从.mtl加载映射
- 对象加载在不同的位置每次我刷新页面- Three.js - OBJMTLloader