0

Art of Illusion を使用して作成した 3D モデルは次のとおりです。

ここに画像の説明を入力

このチュートリアルに従って、興味のあるすべての人のために砂時計を作成しました。

hourglass.obj というファイルにエクスポートしました。さて、オブジェクトを表示するために使用しているコードは次のとおりです。

public class LoadAnObject extends Applet
{
    public LoadAnObject()
    {
        setLayout(new BorderLayout());
        GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
        Canvas3D canvas = new Canvas3D(config);
        add("Center", canvas);

        BranchGroup content = getScene();
        content.compile();

        SimpleUniverse universe = new SimpleUniverse(canvas);
        universe.getViewingPlatform().setNominalViewingTransform();
        universe.addBranchGraph(content);
    }

    public BranchGroup getScene()
    {
        BranchGroup group = new BranchGroup();

        ObjectFile object = new ObjectFile();
        Scene scene = null;

        try
        {
            scene = object.load("/Users/John/ArtOfIllusion/Hourglass.obj");
        }catch(Exception e){e.printStackTrace();}

        group.addChild(scene.getSceneGroup());
        return group;
    }

    public static void main(String args[])
    {
        Frame frame = new MainFrame(new LoadAnObject(), 256, 256);
    }
}

コンパイルまたは実行してもエラーは発生しません。ロード時に空白のユニバースが表示されます。ここからこのコードを取得しました:

オブジェクトがユニバースに表示されないのはなぜですか?

4

1 に答える 1

0

オブジェクトは表示されていましたが、光源がなかったため表示できませんでした。砂時計を表示するために追加する必要のあるコードは次のとおりです。

public BranchGroup getScene()
{
    BranchGroup group = new BranchGroup();

    ObjectFile object = new ObjectFile();
    Scene scene = null;

    try
    {
        scene = object.load("/Users/John/ArtOfIllusion/Hourglass.obj");
    }catch(Exception e){e.printStackTrace();}

    group.addChild(scene.getSceneGroup());

    Color3f light1Color = new Color3f(1.0f, 1.0f, 1.0f);
    BoundingSphere bounds = new BoundingSphere(new Point3d(0.0,0.0,0.0), 100.0);
    Vector3f light1Direction = new Vector3f(.3f, 0, 0);
    DirectionalLight light1 = new DirectionalLight(light1Color, light1Direction);
    light1.setInfluencingBounds(bounds);
    group.addChild(light1);

    return group;
}
于 2012-07-12T04:00:08.843 に答える