我已经在解决一个问题上工作了几个星期,现在想确认一下我的方法是否过于复杂。这是在iOS上使用OpenGL ES 2.0完成的,但原则是通用的,所以答案可以纯数学形式给出。以下是摘要。
我有3D空间中的2个点和一个控制点,我正在使用它们来生成贝塞尔曲线,公式如下:
B(t) = (1 - t)²P₀ + 2(1 - t)tP₁ + t²P₂
起始/结束点被定位在一个相当大的球体上的动态坐标上,因此x/y/z变化很大,使得静态解决方案不太实用。我目前正在使用GL_LINE_STRIP渲染这些点。下一步是使用GL_TRIANGLE_STRIP渲染曲线并控制其宽度相对于高度。
根据这个快速讨论,解决我的问题的好方法是找到与曲线平行的点,考虑它的方向。我希望总共创建3条曲线,传入索引以创建不同宽度的Bezier曲线,然后绘制它。
还有插值和使用Loop-Blinn技术的讨论,似乎可以解决各自问题的特定问题。然而,我认为这些解决方案可能对我追求的目标过于复杂。我也不想将纹理混合在一起。我希望三角形只使用我稍后在着色器中计算的颜色进行绘制。
所以,在我深入阅读三线性插值,Catmull-Rom样条,Loop-Blinn论文或进一步探索采样之前,我想确保哪个方向最有可能是最好的选择。我认为,可以将问题以其最基本的形式表述为:在3D空间中取一个点,并找到两个平行的点,沿着它一起考虑下一个点绘制的方向。
感谢您的时间,如果需要任何进一步的信息,请告诉我,我会尽力添加。
我有3D空间中的2个点和一个控制点,我正在使用它们来生成贝塞尔曲线,公式如下:
B(t) = (1 - t)²P₀ + 2(1 - t)tP₁ + t²P₂
起始/结束点被定位在一个相当大的球体上的动态坐标上,因此x/y/z变化很大,使得静态解决方案不太实用。我目前正在使用GL_LINE_STRIP渲染这些点。下一步是使用GL_TRIANGLE_STRIP渲染曲线并控制其宽度相对于高度。
根据这个快速讨论,解决我的问题的好方法是找到与曲线平行的点,考虑它的方向。我希望总共创建3条曲线,传入索引以创建不同宽度的Bezier曲线,然后绘制它。
还有插值和使用Loop-Blinn技术的讨论,似乎可以解决各自问题的特定问题。然而,我认为这些解决方案可能对我追求的目标过于复杂。我也不想将纹理混合在一起。我希望三角形只使用我稍后在着色器中计算的颜色进行绘制。
所以,在我深入阅读三线性插值,Catmull-Rom样条,Loop-Blinn论文或进一步探索采样之前,我想确保哪个方向最有可能是最好的选择。我认为,可以将问题以其最基本的形式表述为:在3D空间中取一个点,并找到两个平行的点,沿着它一起考虑下一个点绘制的方向。
感谢您的时间,如果需要任何进一步的信息,请告诉我,我会尽力添加。