我对由objectloader加载的threejs模型有问题,我添加了最新的ThreeJs库版本,以获得更多功能,例如,使用objectloader创建文本...这是我的代码:
loadThreeJs() {
const loader = new THREEE.ObjectLoader();
loader.load('./assets/MVP-TW-CCTV TOWER.json', (obj) => {
console.log(obj)
var object3DInside = obj.children[0].children[0];
console.log(object3DInside)
setTimeout(() => {this.addScene(object3DInside)},1000)
}, (xhr) => {
console.log((xhr.loaded / xhr.total * 100) + '% loaded');
});
}
addScene(obj:any)
{
this.viewer.impl.createOverlayScene('load-scene');
this.viewer.impl.addOverlay('load-scene', obj );
this.viewer.impl.invalidate(true);
}
哪三个是我从外面加载的threejs库。obj
是场景,所以我得到了object3D的孩子,但是它总是返回object not an instance of THREE.Object3D.
我记录的结果,类型是object3D,应该是正确的,但是不是吗?
似乎你正在使用Three.js的另一个版本,并在全球范围内引用它,而Forge Viewer本身并未提供该版本,因此它将与Forge Viewer一个版本冲突。正如Petr在此处提到的(在Autodesk Forge Viewer中升级三个js版本),Forge Viewer使用自维护的three.js r71删除了大多数内置的three.js函数。
如果要使用Forge Viewer的three.js库中缺少的功能,我建议你使用一些现代开发工具,例如捆绑软件(Webpack是最受欢迎的工具)。你可以利用ES6模块并将仅严格需要的依赖项导入到你的应用程序中。该threejs-全ES6包可以导入three.js所配备到你的应用程序独立,所以在这种情况下,我们可以导入THREEE.ObjectLoader,
和所有其他需要的依赖将包的实现得到照顾。
在此处查看Forge社区博客:https : //forge.autodesk.com/blog/how-add-newest-threejs-features-forge-viewer
感谢您的答复,经过一些努力,我仍然面临着同样的问题。加载程序完美地工作,并返回我想要的,但是查看器无法重新调节对象的类型。它仍然返回
object not an instance of THREE.Object3D
您能否共享一个非机密的,可复制的,最低限度的,可运行的代码示例,以证明此问题?如果不进行调试,我很难了解情况。如果不当公开发布,请发送至
forge[DOT]help[AT]autodesk[DOT]com