私はこれをJava3Dで実装していますが、質問は3Dグラフィックスの実装に関連していると思います。
Shape3D が光の影響を受けるようにしようとしています。私が何をしているか、これまでに試したことを説明させてください。
マスクを使用して初期化するいくつかGeometryArray
の s (特に 1 つとQuadArray
2 つの s) があります。それから私とそれが必要です。また、法線を追加して計算してみました。TriangleArray
COLOR_3 | COORDINATES
setCoordinates
setColors
| NORMALS
すべてGeometryArrays
がShape3D
オブジェクトのジオメトリです。Shape3D
オブジェクト自体は、BranchGroup
ユニバースの直接の子である の子です。
次の方法を使用して外観を設定します。
private void initAppearance() {
Appearance app = new Appearance();
Color3f objColor = new Color3f(0.3f, 0.2f, 0.1f);
Color3f black = new Color3f(0.0f, 0.0f, 0.0f);
app.setMaterial(new Material(black, objColor, objColor, black, 100.0f));
setAppearance(app);
}
次の方法を使用してライトをセットアップします。
private void makeLight(BranchGroup group) {
Color3f lightColor = new Color3f(2f, 2f, 2f);
Vector3f direction1 = new Vector3f(4.0f, -7.0f, -8.0f);
Vector3f direction2 = new Vector3f(-4.0f, 7.0f, 10.0f);
DirectionalLight light1 = new DirectionalLight(lightColor, direction1);
DirectionalLight light2 = new DirectionalLight(lightColor, direction2);
BoundingSphere bounds = new BoundingSphere(new Point3d(0.0, 0.0, 0.0), 50.0);
light1.setInfluencingBounds(bounds);
light2.setInfluencingBounds(bounds);
group.addChild(light1);
group.addChild(light2);
}
これは、マスクを使用し、メソッド、、、を使用しShape3D
たGeometryInfo
ときに機能していました。しかし、ポイントごとに異なる色を設定する必要があるため、sを使用してこれを再実装する必要がありました。POLYGON_ARRAY
setCoordinates
setStripCounts
setContourCounts
GeometryArray
initAppearance はほとんど何もしない (少なくとも何も見えない) ことは知っていますが、どのように見えるべきかわかりません
うまく説明できたと思いますが、必要に応じてさらに説明し、さらにコードを提供できます。