Warm tip: This article is reproduced from serverfault.com, please click

three.js-在Autodesk Forge Viewer中添加ThreeJs模型

(three.js - Add ThreeJs model in Autodesk Forge Viewer)

发布于 2020-11-29 04:54:56

我对由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,应该是正确的,但是不是吗?

在此处输入图片说明

Questioner
Paxton.Huynh
Viewed
22
Eason Kang 2020-11-30 15:28:04

似乎你正在使用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