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“无法读取未定义的属性'长度'”