在 three.js 中在线放置一个图像图标
Place an image Icon on Line in three.js
我使用 xyz 点列表画了一条线,如下所示
for (var i = 0, len = vertices.length - 1; i < len; i++) {
vertex = vertices[i];
geometry = new THREE.CubeGeometry(width+7, height, 1);
geometry.computeVertexNormals();
//material = new THREE.MeshBasicMaterial({ color: 0xff3333, shading: THREE.FlatShading, wireframe: true, transparent: true });
//Initializing MeshNormalMaterial to get the 3d Line Geometry
material = new THREE.MeshBasicMaterial({ color: 0xEB9180 });
mesh = new THREE.Mesh(geometry, material);
mesh.position = vertex;
mesh.lookAt(vertices[1 + i]);
length = vertex.distanceTo(vertices[1 + i]);
mesh.scale.set(1, 1, length + width);
mesh.translateZ(0.5 * length);
segments.add(mesh);
}
使用 xyz 点列表动态创建的线:
现在我想在 行 上放置一个图像图标,它应该按如下方式遍历整行
我建议您为图标使用 THREE.Sprite()
对象。你可以给它一个纹理。
至于沿线移动它,只需调整 Sprite 的 .position
值以跟随您的顶点数组。我把速度管理留给你了!
我使用 xyz 点列表画了一条线,如下所示
for (var i = 0, len = vertices.length - 1; i < len; i++) {
vertex = vertices[i];
geometry = new THREE.CubeGeometry(width+7, height, 1);
geometry.computeVertexNormals();
//material = new THREE.MeshBasicMaterial({ color: 0xff3333, shading: THREE.FlatShading, wireframe: true, transparent: true });
//Initializing MeshNormalMaterial to get the 3d Line Geometry
material = new THREE.MeshBasicMaterial({ color: 0xEB9180 });
mesh = new THREE.Mesh(geometry, material);
mesh.position = vertex;
mesh.lookAt(vertices[1 + i]);
length = vertex.distanceTo(vertices[1 + i]);
mesh.scale.set(1, 1, length + width);
mesh.translateZ(0.5 * length);
segments.add(mesh);
}
使用 xyz 点列表动态创建的线:
现在我想在 行 上放置一个图像图标,它应该按如下方式遍历整行
我建议您为图标使用 THREE.Sprite()
对象。你可以给它一个纹理。
至于沿线移动它,只需调整 Sprite 的 .position
值以跟随您的顶点数组。我把速度管理留给你了!