gpt4 book ai didi

java - Java 3D 中表面的每一面是否可以有不同的颜色?

转载 作者:行者123 更新时间:2023-11-30 02:26:04 25 4
gpt4 key购买 nike

这就是我创建不进行剔除的示例三角形表面的方法

Point3f a = new Point3f(0, 0, 0);
Point3f b = new Point3f(0, 0, 1);
Point3f c = new Point3f(0, 1, 0);

TriangleArray pyramidGeometry = new TriangleArray(3, GeometryArray.COORDINATES);

pyramidGeometry.setCoordinate(0, a);
pyramidGeometry.setCoordinate(1, b);
pyramidGeometry.setCoordinate(2, c);

GeometryInfo geometryInfo = new GeometryInfo(pyramidGeometry);
NormalGenerator ng = new NormalGenerator();
ng.generateNormals(geometryInfo);

GeometryArray result = geometryInfo.getGeometryArray();

Appearance appearance = new Appearance();
PolygonAttributes polyAttrib = new PolygonAttributes();
polyAttrib.setCullFace(PolygonAttributes.CULL_NONE);
appearance.setPolygonAttributes(polyAttrib);

Shape3D shape = new Shape3D(result, appearance);

如果我为外观对象设置某种颜色,该颜色将显示在表面的两侧。

我最好的猜测是这是不可能的,从逻辑的角度来看这是有道理的,因为表面只有两个维度(因此只有一个面),但我想知道是否可以为表面的每一侧设置不同的颜色表面。对我的申请来说会很方便。否则,我需要复制表面以显示每面的颜色。

我已经寻找过答案,但没有成功。

最佳答案

您可以决定是否只看到朝前的侧面,但如果您确实想使用不同的颜色或纹理坐标,则需要创建另一个面。也许可以通过使用使用顶点的法线或方向的着色器来为前向侧和后向侧使用不同的颜色,但这并不是微不足道的,我认为这不值得......除了正面显示的颜色和背面显示的颜色之间是否存在关系。如果您想在 Java3D 中使用着色器,您应该向 Phil 寻求帮助,最好是使用下一版本,即 Java3D 1.7。请通过 JogAmp 官方论坛联系我们。

关于java - Java 3D 中表面的每一面是否可以有不同的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45660060/

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