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

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



■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
   『アスクル』はオフィス・生活用品を格安で翌日にお届けいたします。

   商品は全て75%〜10%オフ!!
     (例) コピー用紙    1288円  (A4−2500枚)
         トイレットペーパー 298円 (12ロール)
     8700アイテムの無料カタログのお申し込みは今すぐ!!
■■■■■■■ http://www.kansai.ne.jp/buneido/askul/ ■■■■■■■■

> えんどう@テクスチャーよくわからない です。
>
> >     QuadArray geometry =  new QuadArray(vertices.length,
> > GeometryArray.COORDINATES|GeometryArray.TEXTURE_COORDINATE_2);
>
> ここで GeometryAarray.NORMALS も指定して、
> setNormals() で法線を指定するとどうなりますか。

やはり張れません。
なんか意味なく青い色がつくだけです。

ちなみに、JAVAPressVol6のカニのテクスチャを文字に張るサンプルを動かしてみた
んですが、
これ自体ちゃんと張れませんでした。
別にどこをいじったわけでもないです。
いったいどうなってるんでしょう…。

一応、僕の作ったソースをつけます。
単純に正方形を作ってそこにテクスチャを張ろうとしてるだけです。

-----------------

import java.awt.Frame;
import javax.media.j3d.*;
import javax.vecmath.*;
import com.sun.j3d.utils.universe.*;
import com.sun.j3d.utils.geometry.*;
import com.sun.j3d.utils.image.*;

public class TexTest {

  public TexTest(){
    Canvas3D canvas = new Canvas3D(null);
    SimpleUniverse universe = new SimpleUniverse( canvas );

    BranchGroup sceneRoot = new BranchGroup();
    TransformGroup sceneGroup = new TransformGroup();

    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);

    Vector3f[] normals = new Vector3f[4];
    normals[0] = new Vector3f(0.0f, 0.0f, 1.0f);
    normals[1] = new Vector3f(0.0f, 0.0f, 1.0f);
    normals[2] = new Vector3f(0.0f, 0.0f, 1.0f);
    normals[3] = new Vector3f(0.0f, 0.0f, 1.0f);

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

    geometry.setCoordinates(0, vertices);
    geometry.setNormals(0,normals);

    Shape3D shape = new Shape3D(geometry,ap);

    sceneGroup.addChild(shape);

    TextureLoader tloader
      = new TextureLoader( "earth.gif", 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 );



    sceneRoot.addChild(sceneGroup);
    universe.addBranchGraph(sceneRoot);

   // Observer

    TransformGroup transform;
    Transform3D translation=new Transform3D();
    translation.setTranslation(new Vector3d(0.0,1.0,3.0));

    transform=universe.getViewingPlatform().getViewPlatformTransform();
    transform.setTransform(translation);


  // Phisical Windows
        Frame frame = new Frame( "Room" );
        frame.add( universe.getCanvas(), "Center" );
        frame.setSize( 400, 400 );
        frame.show();
    }

  /** 実行用のメソッド */
    public static void main( String[] args ) {
        TexTest test = new TexTest();
    }
}