2011-08-01 56 views

回答

1

我很確定Away3D在一些不錯的功能中實現了這個功能,但是這裏是我如何去做的。我假設你是指從相機「電影」到世界空間的正投影(不知道如何實現)。

您正在投影相機視圖平面的光線,因此您基本上正在尋找光線與平面的交點。射線開始於相機的「眼睛」並穿過相機的視平面。

所以交集的兩者之間的3D點將然後是:

Point getIntersection(Ray ray) { 
    float k, t; 
    Point point; 
    Vector toPoint; 

    k = ray.direction.dot(this.normal); 

    if (k != 0.0) { 
    t = (this.position - ray.origin).dot(this.normal)/k; 
    } else { 
    return false; 
    } 

    if (t < 0.0000001) { 
    return false; 
    } 

    return ray.origin + ray.direction * t; 
} 

我在光線追蹤中使用類似的代碼,所以它應該工作。

0

您必須首先獲取鼠標點擊實際產生的「射線」到3D空間中。 然後,通過計算該射線與你的表面的交點(這裏的一些數學),找到你想要的點。在我的情況下,我必須在用戶點擊的球體上得到重點。

獲得 「雷人」:

var vector:Vector3D = new Vector3D(mX/camera.zoom, -mY/camera.zoom, camera.focus); 
vector = camera.transform.matrix3D.deltaTransformVector(vector); 

注意 「相機」 上述目的。

如果你想看到我的球體實施,請查看https://github.com/SabinT/Earth3D

相關問題