2013-01-04 90 views
0

我已經通過了CombinedCamera的實際工作示例,並帶有靈感,我在我的作品中嵌入了combinedcamera。爲什麼使用Three.js使用CombinedCamera.js時正交投影不能正確工作?

camera = new THREE.CombinedCamera(width /2, height/2, 45, 0.1, 1000, -1000, 1000, 1000); 

但在使用透視相機,我的應用程序工作正常:

enter image description here

但相同的應用程序,同時使用正投影不會在所有的工作,它看起來太奇怪了。

enter image description here

什麼在我的代碼的問題?我想在對象的所有x,y和z方向上進行正投影。怎麼做?

+1

從組合相機源看,正交投影的寬度和高度來自透視投影的近平面和遠平面中間的平面的交點。如果您的物體很小但靠近相機,它會像第二張圖像那樣變得非常小。您有多種選擇:在拼字模式下使用setFov或setZoom來更好地構圖對象,或者放大對象並放置相機/對象,使其中心位於相機的近平面和遠平面的中間。 – Slagh

+1

@拉,如何選擇拼字模式時放大我的對象?對不起,如果我衝你更多,我每天學習three.js。這是我的jsfiddle鏈接:http://jsfiddle.net/sagh0900/PrVbg/3/在這個環境中,雖然我附加了combineames.js,令人驚訝的是它不工作。你可以請檢查這個,並幫助理清這個正射投影問題。提前致謝。 –

+1

當我檢查我的Chrome js控制檯時,它會從Dropbox中附加CombinedCamera.js報告錯誤 - 「Uncaught SyntaxError:Unexpected token <」或許是因爲它具有HTML元素。 – Slagh

回答

1

CombinedCamera正投影的寬度和高度來自透視投影的近平面和遠平面中間的平面的交點。如果您的物體很小但靠近相機,它會像第二張圖像那樣變得非常小。

您的設置有0.1, 1000作爲近平面和遠平面,所以它試圖將相機的500個單位構成一個物體,它比您的物體大得多。

你有多種選擇:

  1. 使用setFov或setZoom當正交模式下,包圍您的對象更好。
  2. 放大您的物體並放置相機/物體,使其中心位於相機的近平面和遠平面的中間位置。
  3. 修改相機的近平面和遠平面,以便它們更緊密地構建場景 - 例如,如果您的相機距離物體中心有25個單位,請將相機的近平面和遠平面距離設置爲0.1, 50 - 中點將爲〜25個單位,並在切換模式時根據需要設置對象的框架。
相關問題