各種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