gpt4 book ai didi

java - 使用 Java3D 同时显示多边形线和纹理

转载 作者:行者123 更新时间:2023-12-01 15:50:51 25 4
gpt4 key购买 nike

我已经使用纹理(POLYGON_FILL)成功渲染了 3D 网格。我还想做的是以编程方式同时绘制不同颜色的线(POLYGON_LINE PolygonAttribute),以显示三角形的边缘。它看起来就像您在 3D 建模程序或某些此类应用程序中看到的那样 - 带有说明面部边缘的线轮廓的面部纹理。

这是通过 API 轻松完成的事情还是需要一定的创造力?我想我可以改变纹理坐标,使纹理稍微低于多边形的边缘(但我认为如果面边缘上的间隙变化很大,它看起来会不一致),但是我正在使用 TexCoordGeneration 而不是确定从哪里开始做类似的事情。

基本上,这将用于一种基本但高度定制的 3D 建模应用程序,因此在用户操作 3D 几何体方面会发生许多不太常见的操作。

最佳答案

我对 OpenGL 更熟悉,所以不幸的是这个答案只是一个理论课。我不认为这是 Java3D 的“内置”功能(如果是的话,任何人都可以随时纠正我)。您需要执行多个渲染过程才能完成它。从我刚刚对这个主题所做的一点搜索来看,Java3D 似乎对这类事情没有太多支持。您可能想考虑使用 OpenGL 等较低级别的 API,特别是考虑到您说它是“高度定制的 3d 建模应用程序”。您将更好地控制如何将内容绘制到屏幕上。

话虽这么说。这是一个高层次答案的尝试。您希望显示所有线条,还是仅显示未隐藏在其他多边形后面的线条?

仅渲染未隐藏线

对于每一帧,您需要:

  1. 使用 POLYGON_FILL 渲染网格。
  2. 不清除深度缓冲区,使用POLYGON_LINE再次渲染网格。

深度缓冲区根据多边形与观察者的距离来确定是否应该绘制像素。 Java3D的默认深度测试,根据the javadoc ,是LESS_OR_EQUAL,所以这应该会导致线条绘制在纹理之上。

渲染所有线

这与上面相同,但您需要清除两个渲染 channel 之间的深度缓冲区。

关于java - 使用 Java3D 同时显示多边形线和纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6079335/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com