[英]Changing position of an object by a specific vertex in Three.js
[英]Three.js - position object at vertex of another
我有一個這樣定義的IcosahedronGeometry(省略了有關顏色和非位置內容的所有代碼):
var radius = 200;
geometry = new THREE.IcosahedronGeometry(radius, 2);
var materials = [
new THREE.MeshPhongMaterial({}),
new THREE.MeshBasicMaterial({})
];
group1 = THREE.SceneUtils.createMultiMaterialObject(geometry, materials);
group1.position.x = 0;
// rotate a bit just so it spins off-axis
group1.rotation.x = -1.87;
產生幾乎球形的多面形狀。 我想在這個形狀的幾個頂點上放置小球體。 假設有10個球體。 通過將10個頂點復制到一個數組中來完成此操作,如下所示:
var vertexArray = [];
for (var i = 0; i < 10; i++) {
vertexArray.push(geometry4.vertices[i])
}
然后,我使用復制到vertexArray
來設置Sprites的位置:
for (var i = 0; i < vertexArray.length; i++) {
var loader = new THREE.TextureLoader()
var spriteMaterial = new THREE.SpriteMaterial(
{
map: loader.load('/glow.png'),
blending: THREE.AdditiveBlending,
side: THREE.BackSide
})
var sprite = new THREE.Sprite(spriteMaterial)
sprite.position.set(vertexArray[i].x, vertexArray[i].y, vertexArray[i].z)
// do i need rotate these by the same amount?
sprite.rotation.x = -1.87
scene.add(sprite)
}
所有這些都工作正常,除了Sprite不與二十面體上的實際頂點對齊,它們只是隨機(看似)坐在面上的某個地方。 有時,精靈會恰好位於頂點上。
我是在復制頂點錯誤,還是在此處缺少一個步驟?
添加一個對象作為父對象的子對象,子對象將與父對象一起旋轉。
請使用以下模式:
var sprite = new THREE.Sprite( spriteMaterial );
sprite.position.copy( vertexArray[i] );
group1.add( sprite );
three.js r.76
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.