2

そこで、Java 3D をいじってみたり、最近では、外部の 3D モデルをプログラムにインポートしてみたりしています。この時点で、モデルを OBJ ファイルとしてプログラムに取り込むことができますが、何らかの理由で、プログラムは対応するマテリアル ファイルをロードせず、問題が私のコーディングにあるのか、それとも単にファイルが間違っていたのかわかりません。正しくエクスポートされていません。

これは私が書いたコードです:

import com.sun.j3d.utils.universe.*;
import com.sun.j3d.utils.geometry.*;
import javax.media.j3d.*;
import com.sun.j3d.loaders.objectfile.*;
import com.sun.j3d.loaders.Scene;
import java.awt.Color;
import javax.vecmath.*;

public class ModelLoadingTest {

    public static void main(String[] args) {
        SimpleUniverse universe = new SimpleUniverse();
        BranchGroup scene = new BranchGroup();

        ObjectFile loader = new ObjectFile(ObjectFile.LOAD_ALL);
        loader.setFlags(ObjectFile.RESIZE);

        Scene modelScene = null;

        try{
            modelScene = loader.load("paintedcar.obj");

        }
        catch(Exception e){

        }

        DirectionalLight lighting = new DirectionalLight(new Color3f(Color.WHITE), new Vector3f(0f, 0f, -1f));
        lighting.setInfluencingBounds(new BoundingSphere(new Point3d(0.0, 0.0, 1.0), 100));

        scene.addChild(modelScene.getSceneGroup());
        scene.addChild(lighting);
        universe.addBranchGraph(scene);
        universe.getViewingPlatform().setNominalViewingTransform();
    }
}

私がテストしているモデルは Maya で作成され、Wavefront ファイルとしてエクスポートされたものです。

4

1 に答える 1

1

...コードにテクスチャをロードしていません。matirl ファイルは obj ファイルにコード化されていないため、テクスチャとしてインポートする必要があります。これは、テクスチャをメッシュに割り当てる場合を除いて、球の場合と同じように行うことができます。割り当てるときは、使用する必要があります

"mesh name".setAppearance("your Appearance name");

例えば

model.setAppearance(ap);
于 2013-03-20T17:44:40.563 に答える