Angular5 + Three.js无法读取未定义的属性“Scene1”

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Angular5 + Three.js无法读取未定义的属性“Scene1”相关的知识,希望对你有一定的参考价值。

我有一个与Three.js集成的angular5网站。当我想向Scene添加对象时,我得到以下错误:无法读取未定义的属性“Scene1”。应该定义场景,任何想法?

renderer = new THREE.WebGLRenderer();
public scene = null;
camera = null;
mesh = null;
THREE.Loader.Handlers.add( /.dds$/i, new THREE.DDSLoader );
var mtlLoader = new THREE.MTLLoader();
            mtlLoader.setPath( '../../assets/obj/' );
            mtlLoader.load( 'SkyboxSky.mtl', function( materials ) {
                materials.preload();
                var objLoader = new THREE.OBJLoader();
                objLoader.setMaterials( materials );
                objLoader.setPath( '../../assets/obj/' );
                objLoader.load( 'SkyboxSky.obj', function ( object ) {
                    object.position.y = 0;
                    this.scene.add( object );
                }, onProgress, onError );
            });

但是如果在此之后添加了一些样本对象,则将其添加到场景中没有问题。

答案

试试这个,

renderer = new THREE.WebGLRenderer(); 
public scene = null; 
camera = null; 
mesh = null;
this.scene = new THREE.Scene();
var scope = this;
THREE.Loader.Handlers.add( /.dds$/i, new THREE.DDSLoader ); 
var mtlLoader = new THREE.MTLLoader(); 
mtlLoader.setPath( '../../assets/obj/' ); 
mtlLoader.load( 'SkyboxSky.mtl', function( materials ) { 
    materials.preload(); 
    var objLoader = new THREE.OBJLoader(); 
    objLoader.setMaterials( materials ); 
    objLoader.setPath( '../../assets/obj/' ); 
    objLoader.load( 'SkyboxSky.obj', function ( object ) { 
        object.position.y = 0; 
        scope.scene.add( object ); 
    }, onProgress, onError ); 
});

以上是关于Angular5 + Three.js无法读取未定义的属性“Scene1”的主要内容,如果未能解决你的问题,请参考以下文章

Three.js ColladaLoader“无法读取未定义的属性'长度'”

无法读取未定义和未处理的承诺拒绝的属性“捕获”

Three.JS - 没有皮肤的 DAE 动画

three.js 设置和读取相机外观矢量

Angular 5 无法读取来自 Spring 应用程序的响应标头 [重复]

GetOrgChart:尚未定义父节点的节点