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

[Java3Djp:00927] テクスチャの張り方。



■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
朗報!! 糖尿・肝臓・腎臓・高血圧・便秘などでお悩みの方へ 応募者全員に
オリーゼ     1箱(60包入・3000円)無料(プレゼント)進呈!!送料600円
のみお客様ご負担。 まず、無料1箱を召し上り下さい。『商品を理解し納得』
して、お買い求め下さい。『よい結果だけ』をお客様へ。創業以来55年信頼の
通信販売をめざしています。製造直売のオリーゼ本舗からの提案です。
                 http://www.matsuronet.ne.jp/ori-ze/
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■

ちょっと今までの話とそれますが、
テクスチャの張り方がよくわかりません。
Primitiveの場合は自動で座標を設定してくれるので簡単ですが、
Shape3Dの場合どう設定すればいいのでしょうか?

例えば、単純な四角形を書いてそれに張る場合、

    Appearance ap = new Appearance();

    Point3d[] vertices = new Point3d[4];
    vertices[0] = new Point3d(1.0, 2.0, 0.0);
    vertices[1] = new Point3d(-1.0, 2.0, 0.0);
    vertices[2] = new Point3d(-1.0, 0.0, 0.0);
    vertices[3] = new Point3d(1.0, 0.0, 0.0);


    QuadArray geometry =  new QuadArray(vertices.length,
GeometryArray.COORDINATES|GeometryArray.TEXTURE_COORDINATE_2);

    geometry.setCoordinates(0, vertices);
    Shape3D shape = new Shape3D(geometry,ap);

    sceneGroup.addChild(shape);

    TextureLoader tloader
      = new TextureLoader( "earth.jpg", universe.getCanvas() );
    Texture texture = tloader.getTexture();
    TexCoordGeneration texGen = new TexCoordGeneration();
    texGen.setPlaneS( new Vector4f( 1.0f, 0.0f, 0.0f, 0.0f ) );
    texGen.setPlaneT( new Vector4f( 0.0f, 1.0f, 0.0f, 0.0f ) );
    ap.setTexture( texture );
    ap.setTexCoordGeneration( texGen );

という感じでやってみたんですが、うまく張れません。
そもそも、
    texGen.setPlaneS( new Vector4f( 1.0f, 0.0f, 0.0f, 0.0f ) );
    texGen.setPlaneT( new Vector4f( 0.0f, 1.0f, 0.0f, 0.0f ) );
の部分の座標の指定がよくわからないのですが…。

♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪
   内野 学
    mu621@xxxxxxxxxx
    uchino@xxxxxxxxxx
    http://www.biwa.ne.jp/~mu621/
♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪♪