Hello, Java 3D(Jasmin) World!

Posted on 1月 5th, 2013 by cx20

Java 3D

Java 3D は Java による 3D グラフィックライブラリである。
以下は Jasmin による Java 3D の使用例となっている。

ソースコード

; Produced by NeoJasminVisitor (tinapoc)
; http://tinapoc.sourceforge.net
; The original JasminVisitor is part of the BCEL
; http://jakarta.apache.org/bcel/
; Sun Dec 02 01:53:35 JST 2012
 
.bytecode 51.0
.source Hello.java
.class public Hello
.super javax/swing/JFrame
 
.method public static main([Ljava/lang/String;)V
    .limit stack 3
    .limit locals 2
    .var 0 is arg0 [Ljava/lang/String; from Label0 to Label1
 
    Label0:
.line 12
       0: new Hello
       3: dup
       4: ldc "Hello, World"
       6: invokespecial Hello/<init>(Ljava/lang/String;)V
       9: astore_1
 
    .line 13
      10: aload_1
      11: iconst_1
      12: invokevirtual Hello/setVisible(Z)V
 
    Label1:
.line 14
      15: return
 
.end method
 
.method public <init>(Ljava/lang/String;)V
    .limit stack 3
    .limit locals 4
    .var 0 is this LHello; from Label0 to Label1
    .var 1 is arg0 Ljava/lang/String; from Label0 to Label1
 
    Label0:
.line 17
       0: aload_0
       1: aload_1
       2: invokespecial javax/swing/JFrame/<init>(Ljava/lang/String;)V
 
    .line 18
       5: aload_0
       6: sipush 640
       9: sipush 480
      12: invokevirtual Hello/setSize(II)V
 
    .line 19
      15: aload_0
      16: iconst_3
      17: invokevirtual Hello/setDefaultCloseOperation(I)V
 
    .line 20
      20: aload_0
      21: invokespecial Hello/createCanvas3D()Ljavax/media/j3d/Canvas3D;
      24: astore_2
 
    .line 21
      25: aload_0
      26: invokevirtual Hello/createSceneGraph()Ljavax/media/j3d/BranchGroup;
      29: astore_3
 
    .line 22
      30: aload_0
      31: aload_2
      32: aload_3
      33: invokespecial Hello/connect(Ljavax/media/j3d/Canvas3D;Ljavax/media/j3d/BranchGroup;)V
 
    Label1:
.line 23
      36: return
 
.end method
 
.method private createCanvas3D()Ljavax/media/j3d/Canvas3D;
    .limit stack 3
    .limit locals 3
    .var 0 is this LHello; from Label0 to Label1
 
    Label0:
.line 26
       0: aload_0
       1: invokevirtual Hello/getContentPane()Ljava/awt/Container;
       4: new java/awt/BorderLayout
       7: dup
       8: invokespecial java/awt/BorderLayout/<init>()V
      11: invokevirtual java/awt/Container/setLayout(Ljava/awt/LayoutManager;)V
 
    .line 27
      14: invokestatic com/sun/j3d/utils/universe/SimpleUniverse/getPreferredConfiguration()Ljava/awt/GraphicsConfiguration;
      17: astore_1
 
    .line 28
      18: new javax/media/j3d/Canvas3D
      21: dup
      22: aload_1
      23: invokespecial javax/media/j3d/Canvas3D/<init>(Ljava/awt/GraphicsConfiguration;)V
      26: astore_2
 
    .line 29
      27: aload_0
      28: invokevirtual Hello/getContentPane()Ljava/awt/Container;
      31: aload_2
      32: invokevirtual java/awt/Container/add(Ljava/awt/Component;)Ljava/awt/Component;
      35: pop
 
    .line 30
      36: aload_2
 
    Label1:
      37: areturn
 
.end method
 
.method public createSceneGraph()Ljavax/media/j3d/BranchGroup;
    .limit stack 7
    .limit locals 5
    .var 0 is this LHello; from Label0 to Label1
 
    Label0:
.line 34
       0: new javax/media/j3d/BranchGroup
       3: dup
       4: invokespecial javax/media/j3d/BranchGroup/<init>()V
       7: astore_1
 
    .line 35
       8: aload_0
       9: invokespecial Hello/moveTextBack()Ljavax/media/j3d/TransformGroup;
      12: astore_2
 
    .line 36
      13: aload_0
      14: invokespecial Hello/createSpinner()Ljavax/media/j3d/TransformGroup;
      17: astore_3
 
    .line 37
      18: new javax/media/j3d/RotationInterpolator
      21: dup
      22: new javax/media/j3d/Alpha
      25: dup
      26: iconst_m1
      27: ldc2_w 4000
      30: invokespecial javax/media/j3d/Alpha/<init>(IJ)V
      33: aload_3
      34: new javax/media/j3d/Transform3D
      37: dup
      38: invokespecial javax/media/j3d/Transform3D/<init>()V
      41: fconst_0
      42: ldc 6.2831855
      44: invokespecial javax/media/j3d/RotationInterpolator/<init>(Ljavax/media/j3d/Alpha;Ljavax/media/j3d/TransformGroup;Ljavax/media/j3d/Transform3D;FF)V
      47: astore 4
 
    .line 38
      49: aload 4
      51: new javax/media/j3d/BoundingSphere
      54: dup
      55: invokespecial javax/media/j3d/BoundingSphere/<init>()V
      58: invokevirtual javax/media/j3d/RotationInterpolator/setSchedulingBounds(Ljavax/media/j3d/Bounds;)V
 
    .line 39
      61: aload_3
      62: aload 4
      64: invokevirtual javax/media/j3d/TransformGroup/addChild(Ljavax/media/j3d/Node;)V
 
    .line 40
      67: aload_1
      68: aload_2
      69: invokevirtual javax/media/j3d/BranchGroup/addChild(Ljavax/media/j3d/Node;)V
 
    .line 41
      72: aload_2
      73: aload_3
      74: invokevirtual javax/media/j3d/TransformGroup/addChild(Ljavax/media/j3d/Node;)V
 
    .line 42
      77: aload_3
      78: aload_0
      79: invokespecial Hello/createTextShape()Ljavax/media/j3d/Shape3D;
      82: invokevirtual javax/media/j3d/TransformGroup/addChild(Ljavax/media/j3d/Node;)V
 
    .line 43
      85: aload_0
      86: aload_2
      87: invokespecial Hello/setLighting(Ljavax/media/j3d/TransformGroup;)V
 
    .line 44
      90: aload_1
 
    Label1:
      91: areturn
 
.end method
 
.method private createSpinner()Ljavax/media/j3d/TransformGroup;
    .limit stack 2
    .limit locals 2
    .var 0 is this LHello; from Label0 to Label1
 
    Label0:
.line 48
       0: new javax/media/j3d/TransformGroup
       3: dup
       4: invokespecial javax/media/j3d/TransformGroup/<init>()V
       7: astore_1
 
    .line 49
       8: aload_1
       9: bipush 18
      11: invokevirtual javax/media/j3d/TransformGroup/setCapability(I)V
 
    .line 50
      14: aload_1
 
    Label1:
      15: areturn
 
.end method
 
.method private moveTextBack()Ljavax/media/j3d/TransformGroup;
    .limit stack 6
    .limit locals 2
    .var 0 is this LHello; from Label0 to Label1
 
    Label0:
.line 54
       0: new javax/media/j3d/Transform3D
       3: dup
       4: invokespecial javax/media/j3d/Transform3D/<init>()V
       7: astore_1
 
    .line 55
       8: aload_1
       9: new javax/vecmath/Vector3f
      12: dup
      13: fconst_0
      14: fconst_0
      15: ldc -10.0
      17: invokespecial javax/vecmath/Vector3f/<init>(FFF)V
      20: invokevirtual javax/media/j3d/Transform3D/setTranslation(Ljavax/vecmath/Vector3f;)V
 
    .line 56
      23: new javax/media/j3d/TransformGroup
      26: dup
      27: aload_1
      28: invokespecial javax/media/j3d/TransformGroup/<init>(Ljavax/media/j3d/Transform3D;)V
 
    Label1:
      31: areturn
 
.end method
 
.method private createTextShape()Ljavax/media/j3d/Shape3D;
    .limit stack 7
    .limit locals 5
    .var 0 is this LHello; from Label0 to Label1
 
    Label0:
.line 60
       0: new javax/media/j3d/Appearance
       3: dup
       4: invokespecial javax/media/j3d/Appearance/<init>()V
       7: astore_1
 
    .line 61
       8: aload_1
       9: new javax/media/j3d/Material
      12: dup
      13: invokespecial javax/media/j3d/Material/<init>()V
      16: invokevirtual javax/media/j3d/Appearance/setMaterial(Ljavax/media/j3d/Material;)V
 
    .line 62
      19: new javax/media/j3d/Font3D
      22: dup
      23: new java/awt/Font
      26: dup
      27: ldc "MS Pゴシック"
      29: iconst_0
      30: iconst_1
      31: invokespecial java/awt/Font/<init>(Ljava/lang/String;II)V
      34: new javax/media/j3d/FontExtrusion
      37: dup
      38: invokespecial javax/media/j3d/FontExtrusion/<init>()V
      41: invokespecial javax/media/j3d/Font3D/<init>(Ljava/awt/Font;Ljavax/media/j3d/FontExtrusion;)V
      44: astore_2
 
    .line 63
      45: new javax/media/j3d/Text3D
      48: dup
      49: aload_2
      50: new java/lang/String
      53: dup
      54: ldc "Hello, Java 3D World!"
      56: invokespecial java/lang/String/<init>(Ljava/lang/String;)V
      59: invokespecial javax/media/j3d/Text3D/<init>(Ljavax/media/j3d/Font3D;Ljava/lang/String;)V
      62: astore_3
 
    .line 64
      63: aload_3
      64: iconst_0
      65: invokevirtual javax/media/j3d/Text3D/setAlignment(I)V
 
    .line 65
      68: new javax/media/j3d/Shape3D
      71: dup
      72: invokespecial javax/media/j3d/Shape3D/<init>()V
      75: astore 4
 
    .line 66
      77: aload 4
      79: aload_3
      80: invokevirtual javax/media/j3d/Shape3D/setGeometry(Ljavax/media/j3d/Geometry;)V
 
    .line 67
      83: aload 4
      85: aload_1
      86: invokevirtual javax/media/j3d/Shape3D/setAppearance(Ljavax/media/j3d/Appearance;)V
 
    .line 68
      89: aload 4
 
    Label1:
      91: areturn
 
.end method
 
.method private setLighting(Ljavax/media/j3d/TransformGroup;)V
    .limit stack 6
    .limit locals 3
    .var 0 is this LHello; from Label0 to Label1
    .var 1 is arg0 Ljavax/media/j3d/TransformGroup; from Label0 to Label1
 
    Label0:
.line 72
       0: new javax/media/j3d/DirectionalLight
       3: dup
       4: invokespecial javax/media/j3d/DirectionalLight/<init>()V
       7: astore_2
 
    .line 73
       8: aload_2
       9: new javax/media/j3d/BoundingSphere
      12: dup
      13: invokespecial javax/media/j3d/BoundingSphere/<init>()V
      16: invokevirtual javax/media/j3d/DirectionalLight/setInfluencingBounds(Ljavax/media/j3d/Bounds;)V
 
    .line 74
      19: aload_2
      20: new javax/vecmath/Vector3f
      23: dup
      24: fconst_0
      25: fconst_0
      26: ldc -1.0
      28: invokespecial javax/vecmath/Vector3f/<init>(FFF)V
      31: invokevirtual javax/media/j3d/DirectionalLight/setDirection(Ljavax/vecmath/Vector3f;)V
 
    .line 75
      34: aload_2
      35: new javax/vecmath/Color3f
      38: dup
      39: fconst_1
      40: fconst_1
      41: fconst_1
      42: invokespecial javax/vecmath/Color3f/<init>(FFF)V
      45: invokevirtual javax/media/j3d/DirectionalLight/setColor(Ljavax/vecmath/Color3f;)V
 
    .line 76
      48: aload_1
      49: aload_2
      50: invokevirtual javax/media/j3d/TransformGroup/addChild(Ljavax/media/j3d/Node;)V
 
    Label1:
.line 77
      53: return
 
.end method
 
.method private connect(Ljavax/media/j3d/Canvas3D;Ljavax/media/j3d/BranchGroup;)V
    .limit stack 3
    .limit locals 4
    .var 0 is this LHello; from Label0 to Label1
    .var 1 is arg0 Ljavax/media/j3d/Canvas3D; from Label0 to Label1
    .var 2 is arg1 Ljavax/media/j3d/BranchGroup; from Label0 to Label1
 
    Label0:
.line 80
       0: new com/sun/j3d/utils/universe/SimpleUniverse
       3: dup
       4: aload_1
       5: invokespecial com/sun/j3d/utils/universe/SimpleUniverse/<init>(Ljavax/media/j3d/Canvas3D;)V
       8: astore_3
 
    .line 81
       9: aload_3
      10: invokevirtual com/sun/j3d/utils/universe/SimpleUniverse/getViewingPlatform()Lcom/sun/j3d/utils/universe/ViewingPlatform;
      13: invokevirtual com/sun/j3d/utils/universe/ViewingPlatform/setNominalViewingTransform()V
 
    .line 82
      16: aload_3
      17: aload_2
      18: invokevirtual com/sun/j3d/utils/universe/SimpleUniverse/addBranchGraph(Ljavax/media/j3d/BranchGroup;)V
 
    Label1:
.line 83
      21: return
 
.end method

コンパイル&実行方法

C:¥> java -jar jasmin.jar Hello.j
C:¥> javaw Hello

実行結果

+------------------------------------------+
|Hello, World!                    [_][~][X]|
+------------------------------------------+
|Hello, Java 3D World!                     |
|                                          |
|                                          |
|                                          |
|                                          |
|                                          |
|                                          |
|                                          |
|                                          |
|                                          |
+------------------------------------------+

Tags:

Categories: Jasmin, Java, Java 3D

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

WP-SpamFree by Pole Position Marketing