[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Java3Djp:01551] looking where?



━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
ジャイアンツ優勝セール![一休.COM]だけの『東京ドームホテル』半額!
「ダブルルーム」通常価格:¥24,000  ●優勝価格:¥12,000
とにかくすぐ会員登録(無料)をして、ご予約を!!
会員登録キャンペーン→ http://www.ikyu.com/present/present_ci.asp?cp=041
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

はじめて質問します。

lookAtを使ってCubeをZ軸の負の位置からみると
表示されるのですが、正の位置からみると表示
されません。

これはどうしてなのでしょうか?

3DCGのアプリを組むのは初めてなもので、必要な
手順が抜けているような気がしています。

以下にソースコードを添付します。
よろしくお願いします。

/*
 * @(#)CoordTest.java
 */

import java.io.*;
import java.util.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.applet.Applet;
import com.sun.j3d.utils.applet.MainFrame;
import javax.media.j3d.*;
import javax.vecmath.*;
import com.sun.j3d.utils.universe.*;
import com.sun.j3d.utils.geometry.*;
import com.sun.j3d.utils.behaviors.mouse.*;

public class CoordTest extends Applet {
    private Canvas3D            canvas;
    private SimpleUniverse      universe;
    private BranchGroup         branchGroup;
    private TransformGroup      transformGroup;
    private Transform3D         transform3D;

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

        universe        = new SimpleUniverse(canvas);
        branchGroup     = new BranchGroup();
        transformGroup  = new TransformGroup();

        transform3D     = new Transform3D();
        if (false) {
// OK
            transform3D.lookAt(new Point3d( 0.0, 0.0, -5.0),
                               new Point3d( 0.0, 0.0, 5.0),
                               new Vector3d(0.0, 1.0, 0.0));
        }
        else {
// NG
            transform3D.lookAt(new Point3d( 0.0, 0.0, 5.0),
                               new Point3d( 0.0, 0.0, -5.0),
                               new Vector3d(0.0, 1.0, 0.0));
        }
        transform3D.invert();
        transformGroup.setTransform(transform3D);

        transformGroup.addChild(new MyCube());
        branchGroup.addChild(transformGroup);
        universe.addBranchGraph(branchGroup);
    }

    private class MyCube extends TransformGroup {
        public MyCube() {
            transformGroup.addChild(new ColorCube(0.4));
        }
    }

    public static void main(String[] args) {
        new MainFrame(new CoordTest(), 640, 480);
    }
}

--
いしいともかず
ishii@xxxxxxxxxxxx