[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Java3Djp:00930] Re: 内側にテクスチャ
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
『アスクル』はオフィス・生活用品を格安で翌日にお届けいたします。
商品は全て75%〜10%オフ!!
(例) コピー用紙 1288円 (A4−2500枚)
トイレットペーパー 298円 (12ロール)
8700アイテムの無料カタログのお申し込みは今すぐ!!
■■■■■■■ http://www.kansai.ne.jp/buneido/askul/ ■■■■■■■■
こんにちは、Atsushi です。
>> Cylinder から getShape(Cylinder.BODY) メソッドで側面を取り出して、
>> 複製した後に SceneGraph に追加します。
>> getShape(Cylinder.BODY) メソッドを取り出した側面ノードは Cylinder
>> ノードの下にすでにぶら下げられているので、複製するところがポイント
>> です。
> 括弧の数があってないらしくて、自分でいろいろいじってみましたが
> だめでした。
2 行目には括弧が 1 つ多くて、3 行目には 1 つ少なかったですね。
私の試したコードを載せます。
試してみてください。
public class Tunnel extends Applet
{
private Canvas3D canvas;
private SimpleUniverse universe;
public void init()
{
canvas=new Canvas3D(null);
universe=new SimpleUniverse(canvas);
universe.getViewingPlatform().setNominalViewingTransform();
universe.addBranchGraph(createSceneGraph());
setLayout(new BorderLayout());
add(canvas,BorderLayout.CENTER);
}
private BranchGroup createSceneGraph()
{
BranchGroup root=new BranchGroup();
root.addChild(createLight());
root.addChild(createTunnel());
return root;
}
private Node createLight() // 光源の設定
{
Light light=new PointLight(new Color3f(10.0f,10.0f,10.0f),
new Point3f( 0.3f, 0.3f,10.0f),
new Point3f( 0.1f, 0.1f, 0.0f));
BoundingSphere bounds=
new BoundingSphere(new Point3d(),Double.POSITIVE_INFINITY);
light.setInfluencingBounds(bounds);
return light;
}
private Node createTunnel() // トンネルの設定
{
Transform3D rotation;
TransformGroup transform;
Appearance appearance;
Texture texture;
Material material;
Cylinder tunnel;
rotation=new Transform3D();
// rotation.rotX(Math.PI/2.0);
transform=new TransformGroup(rotation);
appearance=new Appearance();
texture=new TextureLoader("./hoge.jpg",this)
.getTexture();
appearance.setTexture(texture);
material=new Material();
material.setLightingEnable(true);
appearance.setMaterial(material);
tunnel=new Cylinder(1.0f,100.0f,
Cylinder.GENERATE_NORMALS |
Cylinder.GENERATE_NORMALS_INWARD |
Cylinder.GENERATE_TEXTURE_COORDS,300,100,appearance);
transform.addChild(tunnel.getShape(Cylinder.BODY)
.cloneNode(true));
return transform;
}
}
--------------------------------------------------
Atsushi
mailto:atusi@xxxxxxxxxx
http://www.ipc-tokai.or.jp/~atusi/index.html