【发布时间】:2020-02-06 05:26:47
【问题描述】:
我想在平面图上的某些节点旁边添加图像、svg 甚至创建三个图形。
这是我获取节点位置的方法dbId
function getLeafFragIds(model, leafId) {
const instanceTree = model.getData().instanceTree;
const fragIds = [];
instanceTree.enumNodeFragments( leafId, function( fragId ) {
fragIds.push( fragId );
});
return fragIds;
}
function getComponentGeometry( viewer, dbId ) {
const fragIds = getLeafFragIds( viewer.model, dbId );
let matrixWorld = null;
const meshes = fragIds.map( function( fragId ) {
const renderProxy = viewer.impl.getRenderProxy( viewer.model, fragId );
const geometry = renderProxy.geometry;
const attributes = geometry.attributes;
const positions = geometry.vb ? geometry.vb : attributes.position.array;
const indices = attributes.index.array || geometry.ib;
const stride = geometry.vb ? geometry.vbstride : 3;
const offsets = geometry.offsets;
matrixWorld = matrixWorld || renderProxy.matrixWorld.elements;
return {
positions,
indices,
offsets,
stride
};
});
return {
matrixWorld,
meshes
};
}
有没有一种方法可以用来在节点旁边放置或绘制一些东西?我看过一些与THREE.ImageUtils.loadTexture(); 和setMaterial() 相关的代码,但问题是我不知道如何定义节点旁边的确切位置
如果我们谈论这样的几何图形:
let geometry = new THREE.BoxGeometry(1,1,1);
let material = new THREE.MeshBasicMaterial({color: 0x00ff00});
let cube = new THREE.Mesh(geometry, material);
如何定义它靠近node的位置?
谢谢
【问题讨论】: