2013-03-29 55 views
1

我有一个相当简单的使用three.js渲染的场景。我试图渲染场景的一部分,就像MRI会做的那样。three.js中的方法以正射显示场景切片

我为测试目的制作了两个版本的场景。

  1. 透视版本,这是伟大的工作
  2. 一个正投影版本,这应该只是现场的片上给定平面

渲染字形现场是没有问题的。我试图用裁剪平面捕捉切片,但无法使其工作。要么我得到一个完全白色的屏幕或整个模型。

这里是什么,我希望达到的自上而下的观点:

100 *----------------------------------* 
    |         | 
    |         | 
    |         | 
    |         | 
    #################################### <-- Capture this slice of 100 units width 
    |         | 
    |         | 
    |         | 
    |         | 
0 *----------------------------------* 
    0         100 





        \/
        \/ 
        CAMERA roughly @ (50, -100) 

这是完全有可能的,我失去了一些东西明显。我的3D背景很不错,但我不是专家。

在Three.js/WebGL中去解决这个问题的最好方法是什么?相机要走的最好的地方是什么?

PS:是的,我知道对某些原语进行切片效果不好。我正在使用根据线条和点构建的模型,我预计这些模型会相当安全。将物体切成两半对我来说不是太大问题。

回答

2

答案竟然是相机的摆放位置。事后看来很明显,相机不应该根据透视投影的需要从场景中退出。将相机放置在模型的边缘,使诀窍和裁剪平面(近,远)都能正常工作。

如:

Z 
100 *----------------------------------* 
    |         | 
    |         | 
75 |         | 
    |         | 
    |         | 
50 |         | 
    |         | 
    |         | 
25 #################################### <-- Capture this slice of 5 units 
    |         |  width @ z = 25 
    |         | 
0 *-----------------X----------------* Y 
    0     .    100 
         . 
         . 
        CAMERA is here at (50,0) 
        near = 25 
        far = 30 (for width 5, ie: 25 + 5) 
+0

你有一个行动的这个例子吗?我对结果真的很感兴趣!干杯 – Jammer