- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在创建一个基于软件的 3D 渲染器,只是为了学习概念和数学。这很有趣,我在网格顶部有一个漂亮的旋转立方体,充当一种地板。使用线段渲染网格/地板。我有一个使用简单的观察转换定位和定向的虚拟相机。观察平面任意设置为距“眼睛”的距离为 n,或在 z = -n
.
一切正常(从对象到世界转换到相机空间,剔除,项目,剪辑,渲染)除了一件事。渲染网格时,线段端点可能跨越虚拟相机的观察平面。我想渲染可见的部分,所以我剪辑到查看平面。剪裁的端点被投影到观察平面。投影是:
p'(x) = -n * p(x) / p(z)
p'(y) = -n * p(y) / p(z)
p(z) ≤ -n
.裁剪到观察平面的点有
p(z) = -n
.因此,我有效果:
p'(x) = p(x)
p'(y) = p(y)
最佳答案
您应该能够摆脱这些转换到屏幕空间之外的点,而无需查看您的视锥体体积。所以在你进行截锥剔除之前,你的屏幕空间裁剪算法是什么样的?看看这些算法:http://en.wikipedia.org/wiki/Line_clipping看看你是否能从中受益。
无论哪种方式,我认为您应该考虑使您的渲染器能够处理位于操作系统窗口之外的点。使用上述裁剪算法,您可以剔除完全落在窗口外的线段,并裁剪只有一个点在外面或两个点都在外面但线穿过屏幕空间的线段。
关于rendering - 我应该如何处理裁剪到观察平面的 3D 点的投影?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8530505/
我正在尝试编写一个程序来列出网络上所有设备的 IP 地址。其主要组成部分之一是能够 ping 设备。这个程序必须在 Linux、Windows 和 Mac 上运行,所以我选择了 Boost 库。 我设
如果我使用 Google 的 Jquery 加载脚本链接,那么如果用户的缓存中已经有该文件,那么当页面加载时,用户计算机是否仍会以任何方式与 Google 联系? 例子: 最佳答案 根据浏览器的缓存
我想在我的 ruby 代码中 ping 一个站点,发现 net-ping 是一个很好的库来执行此操作。不幸的是,当我尝试 gem install net-ping 时出现以下错误: C:>gem
我有一个表(test_matches),其中记录了几场比赛的结果,按日期排序。 GHFT = 目标主队全职。GAFT = 全职客场进球队。 CREATE TABLE `test_matches` (
我正在使用 phing对于一个项目的一些自动构建过程,我想知道:我怎样才能通过电子邮件获得完整的日志? 当我通过命令行启动 phing 时,会显示构建日志;我想要它: 通过电子邮件发送, 给几个收件人
尝试根据 GF 和 GA 创建一个新列“Results”。想知道如何通过定义函数和条件语句来做到这一点。以下是我对一行的初步尝试,但无法弄清楚如何将其应用于所有行,非常感谢您的帮助! 日期地点对手GF
我是一名优秀的程序员,十分优秀!