【问题标题】:Method in three.js to orthographically display a slice of the scenethree.js 中的方法,用于正交显示场景的切片
【发布时间】:2013-03-29 19:55:58
【问题描述】:

我有一个使用three.js 渲染的相当简单的场景。我正在尝试只渲染场景的一部分,就像 MRI 所做的那样。

出于测试目的,我制作了两个版本的场景。

  1. 透视版,效果很好
  2. 正交版本应该只是给定平面上场景的一部分

渲染正交场景没有问题。我曾尝试使用剪裁平面来捕获切片,但无法正常工作。要么是全白屏,要么是整个模型。

这是我希望实现的自上而下的视图:

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





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

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

在 Three.js / WebGL 中解决这个问题的最佳方法是什么?相机的最佳拍摄位置是什么?

PS:是的,我知道切片某些原语效果不佳。我正在使用由线和点构建的模型,我希望这些线和点会相当安全地切片。将物体切成两半对我来说不是什么大问题。

【问题讨论】:

    标签: 3d three.js webgl


    【解决方案1】:

    结果证明是相机放置。事后看来,很明显,相机不应该像透视投影那样从场景中移开。将相机放在模型的边缘就可以了,剪裁平面(近、远)正常工作。

    例如:

        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)
    

    【讨论】:

    • 你有这方面的例子吗?我会对结果很感兴趣!干杯
    猜你喜欢
    • 1970-01-01
    • 2015-11-05
    • 1970-01-01
    • 2022-01-01
    • 2012-11-14
    • 2014-01-09
    • 1970-01-01
    • 1970-01-01
    • 2015-10-03
    相关资源
    最近更新 更多