2016-01-20 21 views
2

我正在將現有的three.js項目移植到WebVR + Oculus Rift。基本上,這個應用程序需要一個STL文件作爲輸入,創建一個基於它的THREE.Mesh並呈現它在一個空的場景。我設法在Firefox Nightly中使用VREffect插件工作到three.js和VRControls。我遇到的問題是在VR中渲染的模型不是真正的3D。也就是說,當我來回移動HMD時,主動3D模型不會變得更近/更遠,並且我看不到模型的不同側面。它看起來像模型是一個堅持自己的立場平坦的背景圖像。如果我將THREE.AxisHelper添加到場景中,則在HMD移動時它會正確轉換。如何使用WebVR製作THREE.MESH容量?

最初,THREE.OrbitControls被用於應用程序和模型旋轉和正確移動。

這裏有相當多的源代碼,所以我會按需發佈一些片段。

+0

這真的很奇怪。你還在使用OrbitControls嗎?模型是直接添加到場景中,還是添加到相機?這聽起來像是你將模型添加到相機,所以它隨着相機移動,這意味着你不能從不同的角度看到它。 – brianpeiris

+0

您可能需要使用'DeviceOrientationControls' – gaitat

+0

@brianpeiris,是的。我對此有印象,但我將網格添加到場景中,然後將相機添加到場景中。這有點奇怪,因爲我找不到任何推薦的演示。但是,在我的情況下,如果攝像機不將它添加到場景中,它根本不會移動。 而我沒有使用OrbitControls,因爲當VR模式啓用時,Oculus顯示屏上沒有光標,因此鼠標事件被忽略。實際上,我想使用OrbitControls,因爲它們有時可以派上用場,但對於當前的WebVR實現似乎不可行。 – Ivan

回答

3

原來,技術上沒有問題。這個問題基本上與我的模型和Oculus運動的不同尺度有關。當默認設置使用VRControls時,它會報告從Oculus讀取的HMD位置,以米爲單位。所以,我的頭部運動範圍幾乎可以超過1米,而我的模型的平均尺寸大約是幾十個他們自己的單位。當我在同一場景中完全使用它們時,它就像一個觀衆是一隻螞蟻看着一個巨大的模型。自然,螞蟻必須走一段時間才能看到模型的另一面。這就是爲什麼它看起來不是3D機體。

幸運的是,有scale屬性VRControls應該用於調整HMD動作的比例。當我將它設置爲30左右時,一切運作良好。

感謝@brianpeiris的評論,我決定再次檢查模型和相機的座標,以確保它們不會互相編織。而且,它將我引向解決方案。

相關問題