2014-05-11 24 views
0

對於人類演示http://threejs.org/examples/#webgl_morphtargets_human,我想知道如何獲得人類皮膚上的一個點。例如,當我點擊人體某個地方時,那個地方的座標是什麼?如何獲取一個SkinnedMaterial上的點座標,用於three.js的人類演示?

我嘗試使用raycaster來獲取,但在vain.The代碼是這樣的:

var projector; 
    init() { 
    // Others 
    // ... 

    projector = new THREE.Projector(); 
    renderer.domElement.addEventListener('mouseup', onMouseUp, false); 
    } 

    function onMouseUp(e) { 
    e.preventDefault(); 

    var vector = new THREE.Vector3(
        (event.clientX/window.innerWidth) * 2 - 1, 
        - (event.clientY/window.innerHeight) * 2 + 1, 
        0.5 
       ); 
    projector.unprojectVector(vector, camera); 

    var raycaster = new THREE.Raycaster(camera.position, vector.sub(camera.position).normalize()); 

    var intersections = raycaster.intersectObjects(character.root.children); 

    if (intersections.length > 0) { 
     debugger; 
     // ... 
    } 

    } 

intersections總是空的。

Three.js是r67

在此先感謝。

回答

0

那麼,最後我發現這只是因爲人類的動畫。如果我將動畫評論出來,它就可以工作。

0

我是three.js的新手,我也試圖在人類身上繪製陰謀。我設法做到了,但它不在「可見」的身體上。事實上,你應該首先使用交叉方法與遞歸ARG:

var intersections = raycaster.intersectObjects(scene.children, true); 

因此,您將能夠與構成基體交互的對象,但他們不是在‘皮膚’的位置。這似乎是,他們已被「移動」,因爲,如果你瞄準身體的腳前面,你可以與他們互動。不幸的是,我目前不知道爲什麼,以及如何與他們的「可見表示」進行交互。

相關問題