1

我正在尝试在其中生成一个 3D 球体的绘图,canvas我想在其中快速渲染:我的目标是 iPad 上的小(300 像素正方形)画布的实时性能。

大多数用于任何复杂的 HTML5 渲染的演示都使用 WebGL(与 three.js 之类的),这很棒,但在 iOS 上的支持有限(实际上,目前没有,但 Apple 在技术上可以启用它)。

canvas,但是,效果很好。

因此,我正在更加努力地构建一些基本的渲染功能,canvas因为 CSS3 给了我 HW Transform 并且canvas可以用于基本的纹理。我可以通过在画布上绘制来伪造照明!退了一步,因为这甚至还不是完整的硬件 T&L(DX7!...),但我仍然坚信可以构建仍然非常酷的东西。诀窍是尽可能减少几何体的数量(除其他外)。

回到手头的话题。我的实际问题非常具体。如果我想要绘制的球体离相机足够远,我可以通过它的正交投影来摆脱它。在这种情况下,我似乎可以使用弧形路径以及可用于canvas. 这不允许我以任何方式对球体进行纹理处理,但应该会产生漂亮的平滑曲线并且看起来不错。

如果我想将透视投影投射到图片中怎么办?这种变换会产生什么样的曲线?是否有可能使用贝塞尔曲线或圆弧路径绘制足够接近的近似曲线?

我知道球体的透视投影是椭圆。椭圆可以很容易地通过缩放圆来生成。它可能就像在给定投影参数的情况下计算出该椭圆的方程一样简单。有人可以帮我解决这个问题吗?

一个对我来说总是开放的选择是忘记弧线并用线条绘制我的线框(这canvas对我来说很方便抗锯齿),就像我们传统上这样做的方式一样,并且收工。例如,如果我想对我的球体进行纹理处理,也无法避免这种情况。

4

1 回答 1

0

为这条曲线寻找一个分析公式(然后尝试将其拟合到某种贝塞尔曲线)可能会越来越深地挖一个洞。

我也很确定内置曲线的性能将是可怕的,因为它们可能是使用我无论如何都会使用的线条功能的助手,所以我只会减少我对渲染和性能的控制。

于 2012-07-02T16:27:16.953 回答