簡體   English   中英

如何使用 Typescript 添加網格以偽造查看器 v6?

[英]How to add a mesh to forge viewer v6 using Typescript?

我需要知道如何使用 Type 腳本將網格添加到 Forge Viewer v6。

我瀏覽了所有主題和文章,它正在使用 v4。

現在,當我嘗試以下代碼時:

    private wallGeometry: THREE.BoxBufferGeometry;

    drawWalls() {

    this.wallGeometry = new THREE.BoxBufferGeometry(4000, 4000, 100, 1, 1, 1);

    console.log('creating wall geometry');

    this.wallGeometry = new THREE.BoxBufferGeometry(4000, 4000, 100, 1, 1, 1);

    console.log('creating wall material');

    let wallMaterial = new THREE.MeshPhongMaterial({ color: 0xff0000 });

    console.log('register wall material');

    this.viewer.impl.matman().addMaterial(
        'dasher-material-vertex',
        wallMaterial,
        true);

    console.log('create Overlay Scene');

    this.viewer.impl.createOverlayScene(this._overlayScene, wallMaterial);

    console.log('wall mesh');

    this.wall = new THREE.Mesh(this.wallGeometry, wallMaterial);
    this.wall.position.set(0, -1000, -2000);

    console.log('add overlay to scene');

    this.addToScene(this.wall);
}

private addToScene(obj: THREE.Object3D) {
    this.viewer.impl.addOverlay(this._overlayScene, obj);
    this.viewer.impl.invalidate(false, false, true);
}

我收到以下錯誤消息:

THREE.Object3D.add:對象不是 THREE.Object3D 的實例。
yr {uuid: "6A27DA63-8F99-4E50-9A99-90BED6CE5B85", name: "", type: "Mesh", parent: null, children: Array(0), ...}
castShadow:假
孩子們: []
繪制模式:0
frustumCulled:真
幾何:Ii {uuid:“8C6C2DD2-B233-4E98-998C-2307A84D1E4B”,名稱:“”,類型:“BoxBufferGeometry”,索引:pi,屬性:{…},…}
層數:Pn {掩碼:1}
材料:hc {uuid:“9A6A3601-49F6-4D6E-98E1-21C35BF63D80”,名稱:“”,類型:“MeshPhongMaterial”,霧:真,燈:真,...}
矩陣:dn {元素:數組(16)}
矩陣自動更新:真
矩陣世界:dn {元素:數組(16)}
矩陣世界需要更新:假
姓名: ””
父級:空
位置:在 {x: 0, y: -1000, z: -2000}
四元數:Et {_x: 0, _y: 0, _z: 0, _w: 1, onChangeCallback: ƒ}
接收陰影:假
渲染順序:0
旋轉:Cn {_x: 0, _y: 0, _z: 0, _order: "XYZ", onChangeCallback: ƒ}
比例:在 {x: 1, y: 1, z: 1}
類型:“網格”
向上:在 {x: 0, y: 1, z: 0}
用戶數據: {}
uuid:“6A27DA63-8F99-4E50-9A99-90BED6CE5B85”
可見:真實
eulerOrder: (...)
編號:3
模型視圖矩陣:dn {元素:數組(16)}
normalMatrix: Lt {elements: Array(9)}
使用四元數:(...)
原型:$n

有任何想法嗎??

編輯:這是我的 DevTools 的快照: 在此處輸入圖片說明

根據three.js v71 source ,當插入的對象缺少名為isObject3D的屬性時,會拋出此錯誤。 我不確定缺少此屬性是否可能是 Forge Viewer 造成的。 嘗試在調用addToScene之前放置一個斷點,並確保isObject3D屬性在那里。

此外,由於您在運行時收到此錯誤,因此它也不應該與 TypeScript 相關。

我從控制台檢查了 Three.js 版本,它說 71 !!!

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM