簡體   English   中英

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.

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