2011-03-03 60 views
1

上下文:嘗試使用THREE.js並使用它來顯示圓錐曲線段。使用Three.js

方法:創建頂點網格,然後將face4連接到它們全部。使用兩個面產生正面和背面,以便在錐形部分旋轉時,攝像機從哪個角度觀看它無關緊要。

遇到的問題:1.試圖找到一種創建直觀的鼠標旋轉方案的好方法。如果你在球形座標系中考慮,那麼感覺就像上/下變化phi和左/右變化phi會起作用。但是這要求您可以移動相機。據我所知,除了對象之外,沒有辦法主動改變任何東西的旋轉。有誰知道如何改變相機或場景的旋轉? 2.有沒有一種方法可以繪製比創建網格更好的功能?如果網格有很多點,那麼它太慢了,如果網格有很少的點,那麼你不能很容易地弄清楚圓錐曲線的形狀。

任何形式的幫助將是最優秀的。

回答

1

我還在開始學習Three.js,所以我不確定你的問題的第二部分。 對於第一部分,要更換相機,有一個非常好的方法,它還可以包括縮放和移動場景:軌跡球相機。

對於確切的代碼,以及如何使用它,您可以查看: https://github.com/mrdoob/three.js/blob/master/examples/webgl_trackballcamera_earth.html

在此頁面(http://mrdoob.com/122/Threejs)的鈕,你可以看到在行動的例子(從底部起第三排的球體)。

0

three.js相機有一個軌道控制腳本。

我不確定我是否理解旋轉位。你確實想旋轉一個物體,但你是正確的,旋轉是相對的。

當您旋轉或移動相機時,將爲該位置/旋轉計算一個矩陣,並且確實在保持相機靜止的同時旋轉場景。

雖然這是無關緊要的,因爲你在模型/世界空間工作,並且將相機放置在其中,引擎會照顧引擎蓋下的旋轉。

你可能想要的是設置一個對象,用球面座標勾住你的旋轉,並將你的相機作爲一個孩子鏈接到這個對象。相機Z軸相對於物體的平移應該模仿您的小車(變焦是FOV變化)。

0

您可以通過改變其位置來旋轉攝像頭。看到我粘貼在這裏的代碼:https://gamedev.stackexchange.com/questions/79219/three-js-camera-turning-leftside-right

正如其他人所說OrbitControls.js是一個用戶管理攝像頭的直觀方式。

我在構建formulatoy.net時處理了許多相同的問題。我使用了Morphing Geometries,因爲我發現將3D數學函數映射到UV表面以要求V代碼,並且它允許實現不同座標系(笛卡爾,球形,圓柱形)的簡單方法。

你可以使用粒子而不是網格我想,但網格看起來最好。如果您試圖以數學方式理解表面,則晶格材料不太有用。在這一點上,我正在考慮在表面上繪製自己的X,Y線(或者phi,theta線等),以更好地展示橫截面。

希望有所幫助。

0

您可以使用軌跡球控件,通過它可以放大和縮小對象,旋轉對象,平移它。在軌跡球控件中,您正在相機周圍移動相機.Object仍相對於屏幕或渲染器旋轉中心(0,0,0)。