在 Java 中渲染球体的 "Slice" - 效率
Rendering a "Slice" of a Sphere in Java - Efficiency
我正在尝试在 java 中渲染一个半球。但是,我想渲染由 2 个角度定义的切片 - 方位角和仰角。因为我正在定义一个切片,所以我不能(据我所知)使用任何内置的原语。如果方位角范围定义为 0-360,仰角范围定义为 0-70,这将是一个顶部有倒锥形孔的半球。
在 "cone" 内渲染时,我选择以 5 度为增量将其渲染为三角形。这意味着对于 360 度圆锥体,有 73 个不同的顶点(如果我计算正确:360/5 度切片,圆锥体的原点或尖端与所有边共享,所有其他顶点由相邻三角形切片共享)
我的问题:
将它们渲染为具有许多顶点的单个多边形或每个只有 3 个顶点的许多三角形是否更有效。如果我只做一个多边形,我是否仍然需要为每个三角形包含所有三个点,或者如果它是一个共享顶点,我是否只包含它一次?抱歉,我的图形渲染知识有限。也很抱歉这么冗长;我希望有人能在我的思维过程中发现一些错误,这可能会以任何一种方式解决问题。
首先 - 使用 Google 找到一种算法来创建一个不是基本体的球体。
其次 - 在链条下方的某个地方 - 将使用三角形。最有可能由底层库。但对你来说——这取决于你是否打算分割创建的区域。如果您不打算进一步细分该区域,我只会将其设为一个多边形。实际上,想一想之后——之后您也可以随时划分多边形。所以就把它变成一个多边形吧。
我想了想,决定修改这个答案。有两种方法可以在 openGL 中创建多边形。您可以将其创建为三角形网格或轮廓多边形。所以如果你问 "Should I use a triangular mesh or an outline polygon" 我会说使用三角网格。分解三角形网格比多边形轮廓容易得多,因为要分解网格,您所要做的就是停在其中一个点,将最后两个点包括在新对象中,然后继续下三角网格。轮廓多边形需要您围绕多边形向左和向右移动以找到发生中断的两个点。如果那是清楚的。不说就说
更新:12:05pm
制作多边形时,您可以使用三角形网格或多边形轮廓。轮廓主要适用于 2D,而三角形网格适用于 2D 和 3D 系统。如果您有任何类型的多边形大于三个点,那么将它们全部放入一个数组中是个好主意。这允许您使用 built-in 例程,这些例程采用数组并简单地遍历它来构建您的多边形。通过将所有内容放入数组中,您还可以更轻松地添加新点或删除点或调整点。您所做的就是更改数组条目,然后调用相同的例程再次绘制所有内容。 (这应该只是对函数的一次调用。)
我正在尝试在 java 中渲染一个半球。但是,我想渲染由 2 个角度定义的切片 - 方位角和仰角。因为我正在定义一个切片,所以我不能(据我所知)使用任何内置的原语。如果方位角范围定义为 0-360,仰角范围定义为 0-70,这将是一个顶部有倒锥形孔的半球。
在 "cone" 内渲染时,我选择以 5 度为增量将其渲染为三角形。这意味着对于 360 度圆锥体,有 73 个不同的顶点(如果我计算正确:360/5 度切片,圆锥体的原点或尖端与所有边共享,所有其他顶点由相邻三角形切片共享)
我的问题:
将它们渲染为具有许多顶点的单个多边形或每个只有 3 个顶点的许多三角形是否更有效。如果我只做一个多边形,我是否仍然需要为每个三角形包含所有三个点,或者如果它是一个共享顶点,我是否只包含它一次?抱歉,我的图形渲染知识有限。也很抱歉这么冗长;我希望有人能在我的思维过程中发现一些错误,这可能会以任何一种方式解决问题。
首先 - 使用 Google 找到一种算法来创建一个不是基本体的球体。
其次 - 在链条下方的某个地方 - 将使用三角形。最有可能由底层库。但对你来说——这取决于你是否打算分割创建的区域。如果您不打算进一步细分该区域,我只会将其设为一个多边形。实际上,想一想之后——之后您也可以随时划分多边形。所以就把它变成一个多边形吧。
我想了想,决定修改这个答案。有两种方法可以在 openGL 中创建多边形。您可以将其创建为三角形网格或轮廓多边形。所以如果你问 "Should I use a triangular mesh or an outline polygon" 我会说使用三角网格。分解三角形网格比多边形轮廓容易得多,因为要分解网格,您所要做的就是停在其中一个点,将最后两个点包括在新对象中,然后继续下三角网格。轮廓多边形需要您围绕多边形向左和向右移动以找到发生中断的两个点。如果那是清楚的。不说就说
更新:12:05pm 制作多边形时,您可以使用三角形网格或多边形轮廓。轮廓主要适用于 2D,而三角形网格适用于 2D 和 3D 系统。如果您有任何类型的多边形大于三个点,那么将它们全部放入一个数组中是个好主意。这允许您使用 built-in 例程,这些例程采用数组并简单地遍历它来构建您的多边形。通过将所有内容放入数组中,您还可以更轻松地添加新点或删除点或调整点。您所做的就是更改数组条目,然后调用相同的例程再次绘制所有内容。 (这应该只是对函数的一次调用。)