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

使用Java3D同时显示多边形线和纹理,java,3d,java-3d,Java,3d,Java 3d,我用纹理(多边形填充)成功渲染了一个3d网格。我想做的是通过编程同时绘制不同颜色的线(POLYGON\u LINE polygonatribute),以显示三角形的边。它看起来就像你在3d建模程序或类似的应用程序中看到的一样——带有线轮廓的面部纹理显示面部边缘 这是很容易通过API实现的,还是需要一些创造性?我想我可以改变纹理坐标,使纹理略低于多边形的边(但我认为如果面边上的间隙变化很大,看起来会不一致),但是我正在使用TexCoordGeneration,我不确定从哪里开始这样做 基本上,这将

我用纹理(多边形填充)成功渲染了一个3d网格。我想做的是通过编程同时绘制不同颜色的线(POLYGON\u LINE polygonatribute),以显示三角形的边。它看起来就像你在3d建模程序或类似的应用程序中看到的一样——带有线轮廓的面部纹理显示面部边缘

这是很容易通过API实现的,还是需要一些创造性?我想我可以改变纹理坐标,使纹理略低于多边形的边(但我认为如果面边上的间隙变化很大,看起来会不一致),但是我正在使用TexCoordGeneration,我不确定从哪里开始这样做


基本上,这将是一种基本但高度定制的3d Modeler应用程序,因此在用户操作3d几何体方面有许多不太常见的操作。

我更熟悉OpenGL,所以不幸的是,这个答案只是一个理论课。我不认为这是Java3D的“内置”特性(如果是,任何人都可以随意更正)。您需要执行多个渲染过程才能完成它。从我刚才对这个主题所做的一点点搜索来看,Java3D似乎不太支持这种东西。你可能想看看如何使用OpenGL这样的低级API,尤其是考虑到你说它是一款“高度定制的3d建模应用程序”。您将获得更多的控制权,可以控制如何将内容绘制到屏幕上

话虽如此。下面是一个高层次答案的尝试。要显示所有线,还是只显示未隐藏在其他多边形后面的线

仅渲染未隐藏的线 对于每个帧,您需要:

  • 使用
    POLYGON\u FILL
    渲染网格
  • 在不清除深度缓冲区的情况下,使用
    POLYGON\u LINE
    再次渲染网格
  • 深度缓冲区根据多边形与查看器的距离确定是否绘制像素。根据,Java3D的默认深度测试是
    LESS_或_EQUAL
    ,因此这将导致在纹理顶部绘制线条

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

    渲染未隐藏的线将是目标