JRuby For Knight -CgPrograming- > JRuby call JavaAPI > 2D/3D > Java3D > Geometry


[Prev] [Next] [Up] [Contents][フレーム表示] [フレーム解除

Geometry 応援する 

各種Geometryについて

 Geometry表示用のサンプルコードです。 下記SkeltonコードのcreateGeometryメソッドの内部のコードを入れ替えて、表示するGeometryを入れ替えています。

Skelton

include Java

include_class 'java.applet.Applet'
include_class 'com.sun.j3d.utils.applet.MainFrame'

class Java3d_canvas
  include_package 'java.awt'
  include_package 'java.awt.event'
  include_package 'javax.media.j3d'
  include_package 'javax.vecmath'
  include_package 'com.sun.j3d.utils.geometry'
  include_package 'com.sun.j3d.utils.universe'

  def initialize
    @applet = Applet.new
    init
  end
  
  def createGeometry
    ColorCube.new(0.4)
  end

  def createLight(bg,bound)
    white = Color3f.new(1.0, 1.0, 1.0)
    
    amb = AmbientLight.new(white)
    amb.setInfluencingBounds(bound)
    bg.addChild(amb)
    
    dir1 = DirectionalLight.new(white, Vector3f.new(1.0, 1.0, 1.0))
    dir1.setInfluencingBounds(bound)
    bg.addChild(dir1)
    
    dir2 = DirectionalLight.new(white, Vector3f.new(-1.0, 1.0, -1.0))
    dir2.setInfluencingBounds(bound)
    bg.addChild(dir2)
  end

  def createSceneGraph
    objRoot = BranchGroup.new
    rotate = Transform3D.new
    tempRotate = Transform3D.new
    
        rotate.rotX(Math::PI/4.0)
    tempRotate.rotY(Math::PI/5.0)
        rotate.mul(tempRotate)
    
    objRotate = TransformGroup.new(rotate)
    
    objSpin = TransformGroup.new
    objSpin.setCapability(TransformGroup::ALLOW_TRANSFORM_WRITE)
    
    objRoot.addChild(objRotate)
    objRotate.addChild(objSpin)
    
    objSpin.addChild(createGeometry)
    
    yAxis = Transform3D.new
    rotationAlpha = Alpha.new(-1, 4000)
    
    rotator = RotationInterpolator.new(rotationAlpha, objSpin, yAxis, 0.0, Math::PI*2.0)
    
    bounds = BoundingSphere.new
    rotator.setSchedulingBounds(bounds)
    objSpin.addChild(rotator)
    
    createLight(objRoot,bounds)

    objRoot
  end
  
  def init
    @applet.setLayout(BorderLayout.new)
    config = SimpleUniverse.getPreferredConfiguration
    canvas = Canvas3D.new(config)
    @applet.add(canvas,BorderLayout::CENTER)
    
    scene = createSceneGraph
    scene.compile
    
    simpleU = SimpleUniverse.new(canvas)
    simpleU.getViewingPlatform.setNominalViewingTransform
    
    simpleU.addBranchGraph(scene)
  end
  
  def main
    MainFrame.new(@applet,256,256)
  end
end

Java3d_canvas.new.main

ColorCube

  def createGeometry
    ColorCube.new(0.4)
  end

Box

  def createGeometry
    app = Appearance.new
    mat = Material.new
    mat.setAmbientColor(Color3f.new(1.0,0.0,0.0))
    app.setMaterial(mat)
    Box.new(0.4, 0.4, 0.4, app)
  end

Cone

  def createGeometry
    app = Appearance.new
    mat = Material.new
    mat.setAmbientColor(Color3f.new(1.0,0.0,0.0))
    app.setMaterial(mat)
    Cone.new(0.3, 0.6, app)
  end

Cylinder

  def createGeometry
    app = Appearance.new
    mat = Material.new
    mat.setAmbientColor(Color3f.new(1.0,0.0,0.0))
    app.setMaterial(mat)
    Cylinder.new(0.3, 0.6, app)
  end

Sphere

  def createGeometry
    app = Appearance.new
    mat = Material.new
    mat.setAmbientColor(Color3f.new(1.0,0.0,0.0))
    app.setMaterial(mat)
    Sphere.new(0.4, app)
  end

Text2D


[Prev] [Next] [Up] [Contents][フレーム表示] [フレーム解除

このサイトについて|ヘルプ|Q&A|個人情報保護|プライバシーポリシー|利用規約|コメント・トラックバック規約|削除規程|広告掲載
Copyright (c) 2005-2007 Time Intermedia Corporation