为什么 THREE.BoundingBoxHelper 不显示?
Why does THREE.BoundingBoxHelper not display?
我之前设法显示了盒子,但在这里,我已经剥离了所有内容以便通过定位 collada 模型来试验扩展盒子,但盒子不会显示。
function loadObjects(){
cobj = new THREE.Group();
cobj.name = "5";
scene.add(cobj);
pobj = cobj;
collada("14",pobj);
collada("7",pobj);
function collada(key,pobj){
var nn,file,path,loader,dae,s;
ns = nset[key].shared;
model = ns.Product;
source = ns.Source;
ext = ns.Extension;
path = source +model +ext;
loader = new THREE.ColladaLoader();
loader.load(path,function (collada) {
dae = collada.scene;
dae.name = key;
sc = 25.4;
dae.scale.set(sc,sc,sc);
pobj.add(dae);
});
}
obj = scene.getObjectByName("5");
console.log(obj);
helper = new THREE.BoundingBoxHelper(obj,0xff0000);
helper.update();
scene.add(helper);
sc = 0.1;
scene.scale.set(sc,sc,sc);
requestAnimationFrame( animate );
renderer.render( scene, camera );
$("canvas").show();
}
首先,BoundingBoxHelper
现在是 BoxHelper
。看来您使用的是 three.js
.
的非常旧版本
此外,您的 collada()
函数不是同步的。执行 collada("14",pobj);
和 collada("7",pobj);
后,资产尚未加载,这意味着您正在计算空组对象的边界框。
我建议您等到通过 THREE.LoadingManager 加载了 Collada 模型,然后将助手添加到您的场景中。
或者,确保在动画循环中调用 helper.update()
。但是,如果对象是静态的并且不会更改,则此方法很浪费。所以最好使用加载管理器的 onLoad()
回调。
我之前设法显示了盒子,但在这里,我已经剥离了所有内容以便通过定位 collada 模型来试验扩展盒子,但盒子不会显示。
function loadObjects(){
cobj = new THREE.Group();
cobj.name = "5";
scene.add(cobj);
pobj = cobj;
collada("14",pobj);
collada("7",pobj);
function collada(key,pobj){
var nn,file,path,loader,dae,s;
ns = nset[key].shared;
model = ns.Product;
source = ns.Source;
ext = ns.Extension;
path = source +model +ext;
loader = new THREE.ColladaLoader();
loader.load(path,function (collada) {
dae = collada.scene;
dae.name = key;
sc = 25.4;
dae.scale.set(sc,sc,sc);
pobj.add(dae);
});
}
obj = scene.getObjectByName("5");
console.log(obj);
helper = new THREE.BoundingBoxHelper(obj,0xff0000);
helper.update();
scene.add(helper);
sc = 0.1;
scene.scale.set(sc,sc,sc);
requestAnimationFrame( animate );
renderer.render( scene, camera );
$("canvas").show();
}
首先,BoundingBoxHelper
现在是 BoxHelper
。看来您使用的是 three.js
.
此外,您的 collada()
函数不是同步的。执行 collada("14",pobj);
和 collada("7",pobj);
后,资产尚未加载,这意味着您正在计算空组对象的边界框。
我建议您等到通过 THREE.LoadingManager 加载了 Collada 模型,然后将助手添加到您的场景中。
或者,确保在动画循环中调用 helper.update()
。但是,如果对象是静态的并且不会更改,则此方法很浪费。所以最好使用加载管理器的 onLoad()
回调。