require "java"
require "../../../X3DJSAIL.4.0.full.jar"

ConfigurationProperties = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.ConfigurationProperties")
CommentsBlock = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.CommentsBlock")
AcousticProperties = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shape.AcousticProperties")
Analyser = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.Analyser")
Anchor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Networking.Anchor")
Appearance = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shape.Appearance")
Arc2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geometry2D.Arc2D")
ArcClose2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geometry2D.ArcClose2D")
AudioClip = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.AudioClip")
AudioDestination = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.AudioDestination")
Background = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.EnvironmentalEffects.Background")
BallJoint = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.RigidBodyPhysics.BallJoint")
Billboard = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Navigation.Billboard")
BiquadFilter = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.BiquadFilter")
BlendedVolumeStyle = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.VolumeRendering.BlendedVolumeStyle")
BooleanFilter = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.EventUtilities.BooleanFilter")
BooleanSequencer = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.EventUtilities.BooleanSequencer")
BooleanToggle = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.EventUtilities.BooleanToggle")
BooleanTrigger = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.EventUtilities.BooleanTrigger")
BoundaryEnhancementVolumeStyle = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.VolumeRendering.BoundaryEnhancementVolumeStyle")
BoundedPhysicsModel = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.ParticleSystems.BoundedPhysicsModel")
Box = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geometry3D.Box")
BufferAudioSource = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.BufferAudioSource")
CADAssembly = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.CADGeometry.CADAssembly")
CADFace = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.CADGeometry.CADFace")
CADLayer = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.CADGeometry.CADLayer")
CADPart = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.CADGeometry.CADPart")
CartoonVolumeStyle = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.VolumeRendering.CartoonVolumeStyle")
ChannelMerger = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.ChannelMerger")
ChannelSelector = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.ChannelSelector")
ChannelSplitter = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.ChannelSplitter")
Circle2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geometry2D.Circle2D")
ClipPlane = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Rendering.ClipPlane")
CollidableOffset = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.RigidBodyPhysics.CollidableOffset")
CollidableShape = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.RigidBodyPhysics.CollidableShape")
Collision = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Navigation.Collision")
CollisionCollection = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.RigidBodyPhysics.CollisionCollection")
CollisionSensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.RigidBodyPhysics.CollisionSensor")
CollisionSpace = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.RigidBodyPhysics.CollisionSpace")
Color = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Rendering.Color")
ColorChaser = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Followers.ColorChaser")
ColorDamper = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Followers.ColorDamper")
ColorInterpolator = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Interpolation.ColorInterpolator")
ColorRGBA = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Rendering.ColorRGBA")
ComposedCubeMapTexture = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.CubeMapTexturing.ComposedCubeMapTexture")
ComposedShader = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shaders.ComposedShader")
ComposedTexture3D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing3D.ComposedTexture3D")
ComposedVolumeStyle = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.VolumeRendering.ComposedVolumeStyle")
Cone = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geometry3D.Cone")
ConeEmitter = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.ParticleSystems.ConeEmitter")
Contact = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.RigidBodyPhysics.Contact")
Contour2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.NURBS.Contour2D")
ContourPolyline2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.NURBS.ContourPolyline2D")
Convolver = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.Convolver")
Coordinate = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Rendering.Coordinate")
CoordinateChaser = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Followers.CoordinateChaser")
CoordinateDamper = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Followers.CoordinateDamper")
CoordinateDouble = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Rendering.CoordinateDouble")
CoordinateInterpolator = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Interpolation.CoordinateInterpolator")
CoordinateInterpolator2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Interpolation.CoordinateInterpolator2D")
Cylinder = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geometry3D.Cylinder")
CylinderSensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.PointingDeviceSensor.CylinderSensor")
Delay = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.Delay")
DirectionalLight = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Lighting.DirectionalLight")
DISEntityManager = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.DIS.DISEntityManager")
DISEntityTypeMapping = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.DIS.DISEntityTypeMapping")
Disk2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geometry2D.Disk2D")
DoubleAxisHingeJoint = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.RigidBodyPhysics.DoubleAxisHingeJoint")
DynamicsCompressor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.DynamicsCompressor")
EaseInEaseOut = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Interpolation.EaseInEaseOut")
EdgeEnhancementVolumeStyle = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.VolumeRendering.EdgeEnhancementVolumeStyle")
ElevationGrid = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geometry3D.ElevationGrid")
EspduTransform = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.DIS.EspduTransform")
ExplosionEmitter = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.ParticleSystems.ExplosionEmitter")
Extrusion = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geometry3D.Extrusion")
FillProperties = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shape.FillProperties")
FloatVertexAttribute = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shaders.FloatVertexAttribute")
Fog = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.EnvironmentalEffects.Fog")
FogCoordinate = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.EnvironmentalEffects.FogCoordinate")
FontStyle = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Text.FontStyle")
ForcePhysicsModel = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.ParticleSystems.ForcePhysicsModel")
Gain = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.Gain")
GeneratedCubeMapTexture = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.CubeMapTexturing.GeneratedCubeMapTexture")
GeoCoordinate = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geospatial.GeoCoordinate")
GeoElevationGrid = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geospatial.GeoElevationGrid")
GeoLocation = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geospatial.GeoLocation")
GeoLOD = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geospatial.GeoLOD")
GeoMetadata = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geospatial.GeoMetadata")
GeoOrigin = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geospatial.GeoOrigin")
GeoPositionInterpolator = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geospatial.GeoPositionInterpolator")
GeoProximitySensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geospatial.GeoProximitySensor")
GeoTouchSensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geospatial.GeoTouchSensor")
GeoTransform = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geospatial.GeoTransform")
GeoViewpoint = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geospatial.GeoViewpoint")
Group = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Grouping.Group")
HAnimDisplacer = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.HAnim.HAnimDisplacer")
HAnimHumanoid = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.HAnim.HAnimHumanoid")
HAnimJoint = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.HAnim.HAnimJoint")
HAnimMotion = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.HAnim.HAnimMotion")
HAnimSegment = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.HAnim.HAnimSegment")
HAnimSite = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.HAnim.HAnimSite")
ImageCubeMapTexture = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.CubeMapTexturing.ImageCubeMapTexture")
ImageTexture = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing.ImageTexture")
ImageTexture3D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing3D.ImageTexture3D")
IndexedFaceSet = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geometry3D.IndexedFaceSet")
IndexedLineSet = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Rendering.IndexedLineSet")
IndexedQuadSet = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.CADGeometry.IndexedQuadSet")
IndexedTriangleFanSet = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Rendering.IndexedTriangleFanSet")
IndexedTriangleSet = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Rendering.IndexedTriangleSet")
IndexedTriangleStripSet = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Rendering.IndexedTriangleStripSet")
Inline = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Networking.Inline")
IntegerSequencer = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.EventUtilities.IntegerSequencer")
IntegerTrigger = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.EventUtilities.IntegerTrigger")
IsoSurfaceVolumeData = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.VolumeRendering.IsoSurfaceVolumeData")
KeySensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.KeyDeviceSensor.KeySensor")
Layer = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Layering.Layer")
LayerSet = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Layering.LayerSet")
Layout = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Layout.Layout")
LayoutGroup = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Layout.LayoutGroup")
LayoutLayer = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Layout.LayoutLayer")
LinePickSensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Picking.LinePickSensor")
LineProperties = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shape.LineProperties")
LineSet = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Rendering.LineSet")
ListenerPointSource = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.ListenerPointSource")
LoadSensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Networking.LoadSensor")
LocalFog = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.EnvironmentalEffects.LocalFog")
LOD = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Navigation.LOD")
Material = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shape.Material")
Matrix3VertexAttribute = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shaders.Matrix3VertexAttribute")
Matrix4VertexAttribute = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shaders.Matrix4VertexAttribute")
MetadataBoolean = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.MetadataBoolean")
MetadataDouble = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.MetadataDouble")
MetadataFloat = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.MetadataFloat")
MetadataInteger = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.MetadataInteger")
MetadataSet = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.MetadataSet")
MetadataString = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.MetadataString")
MicrophoneSource = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.MicrophoneSource")
MotorJoint = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.RigidBodyPhysics.MotorJoint")
MovieTexture = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing.MovieTexture")
MultiTexture = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing.MultiTexture")
MultiTextureCoordinate = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing.MultiTextureCoordinate")
MultiTextureTransform = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing.MultiTextureTransform")
NavigationInfo = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Navigation.NavigationInfo")
Normal = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Rendering.Normal")
NormalInterpolator = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Interpolation.NormalInterpolator")
NurbsCurve = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.NURBS.NurbsCurve")
NurbsCurve2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.NURBS.NurbsCurve2D")
NurbsOrientationInterpolator = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.NURBS.NurbsOrientationInterpolator")
NurbsPatchSurface = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.NURBS.NurbsPatchSurface")
NurbsPositionInterpolator = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.NURBS.NurbsPositionInterpolator")
NurbsSet = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.NURBS.NurbsSet")
NurbsSurfaceInterpolator = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.NURBS.NurbsSurfaceInterpolator")
NurbsSweptSurface = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.NURBS.NurbsSweptSurface")
NurbsSwungSurface = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.NURBS.NurbsSwungSurface")
NurbsTextureCoordinate = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.NURBS.NurbsTextureCoordinate")
NurbsTrimmedSurface = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.NURBS.NurbsTrimmedSurface")
OpacityMapVolumeStyle = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.VolumeRendering.OpacityMapVolumeStyle")
OrientationChaser = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Followers.OrientationChaser")
OrientationDamper = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Followers.OrientationDamper")
OrientationInterpolator = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Interpolation.OrientationInterpolator")
OrthoViewpoint = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Navigation.OrthoViewpoint")
OscillatorSource = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.OscillatorSource")
PackagedShader = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shaders.PackagedShader")
ParticleSystem = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.ParticleSystems.ParticleSystem")
PeriodicWave = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.PeriodicWave")
PhysicalMaterial = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shape.PhysicalMaterial")
PickableGroup = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Picking.PickableGroup")
PixelTexture = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing.PixelTexture")
PixelTexture3D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing3D.PixelTexture3D")
PlaneSensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.PointingDeviceSensor.PlaneSensor")
PointEmitter = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.ParticleSystems.PointEmitter")
PointLight = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Lighting.PointLight")
PointPickSensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Picking.PointPickSensor")
PointProperties = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shape.PointProperties")
PointSet = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Rendering.PointSet")
Polyline2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geometry2D.Polyline2D")
PolylineEmitter = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.ParticleSystems.PolylineEmitter")
Polypoint2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geometry2D.Polypoint2D")
PositionChaser = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Followers.PositionChaser")
PositionChaser2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Followers.PositionChaser2D")
PositionDamper = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Followers.PositionDamper")
PositionDamper2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Followers.PositionDamper2D")
PositionInterpolator = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Interpolation.PositionInterpolator")
PositionInterpolator2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Interpolation.PositionInterpolator2D")
PrimitivePickSensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Picking.PrimitivePickSensor")
ProgramShader = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shaders.ProgramShader")
ProjectionVolumeStyle = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.VolumeRendering.ProjectionVolumeStyle")
ProtoInstance = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.ProtoInstance")
ProximitySensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.EnvironmentalSensor.ProximitySensor")
QuadSet = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.CADGeometry.QuadSet")
ReceiverPdu = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.DIS.ReceiverPdu")
Rectangle2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geometry2D.Rectangle2D")
RigidBody = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.RigidBodyPhysics.RigidBody")
RigidBodyCollection = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.RigidBodyPhysics.RigidBodyCollection")
ScalarChaser = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Followers.ScalarChaser")
ScalarDamper = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Followers.ScalarDamper")
ScalarInterpolator = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Interpolation.ScalarInterpolator")
ScreenFontStyle = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Layout.ScreenFontStyle")
ScreenGroup = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Layout.ScreenGroup")
Script = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Scripting.Script")
SegmentedVolumeData = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.VolumeRendering.SegmentedVolumeData")
ShadedVolumeStyle = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.VolumeRendering.ShadedVolumeStyle")
ShaderPart = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shaders.ShaderPart")
ShaderProgram = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shaders.ShaderProgram")
Shape = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shape.Shape")
SignalPdu = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.DIS.SignalPdu")
SilhouetteEnhancementVolumeStyle = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.VolumeRendering.SilhouetteEnhancementVolumeStyle")
SingleAxisHingeJoint = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.RigidBodyPhysics.SingleAxisHingeJoint")
SliderJoint = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.RigidBodyPhysics.SliderJoint")
Sound = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.Sound")
SpatialSound = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.SpatialSound")
Sphere = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geometry3D.Sphere")
SphereSensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.PointingDeviceSensor.SphereSensor")
SplinePositionInterpolator = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Interpolation.SplinePositionInterpolator")
SplinePositionInterpolator2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Interpolation.SplinePositionInterpolator2D")
SplineScalarInterpolator = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Interpolation.SplineScalarInterpolator")
SpotLight = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Lighting.SpotLight")
SquadOrientationInterpolator = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Interpolation.SquadOrientationInterpolator")
StaticGroup = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Grouping.StaticGroup")
StreamAudioDestination = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.StreamAudioDestination")
StreamAudioSource = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.StreamAudioSource")
StringSensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.KeyDeviceSensor.StringSensor")
SurfaceEmitter = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.ParticleSystems.SurfaceEmitter")
Switch = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Grouping.Switch")
TexCoordChaser2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Followers.TexCoordChaser2D")
TexCoordDamper2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Followers.TexCoordDamper2D")
Text = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Text.Text")
TextureBackground = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.EnvironmentalEffects.TextureBackground")
TextureCoordinate = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing.TextureCoordinate")
TextureCoordinate3D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing3D.TextureCoordinate3D")
TextureCoordinate4D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing3D.TextureCoordinate4D")
TextureCoordinateGenerator = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing.TextureCoordinateGenerator")
TextureProjector = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.TextureProjection.TextureProjector")
TextureProjectorParallel = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.TextureProjection.TextureProjectorParallel")
TextureProperties = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing.TextureProperties")
TextureTransform = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing.TextureTransform")
TextureTransform3D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing3D.TextureTransform3D")
TextureTransformMatrix3D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Texturing3D.TextureTransformMatrix3D")
TimeSensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Time.TimeSensor")
TimeTrigger = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.EventUtilities.TimeTrigger")
ToneMappedVolumeStyle = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.VolumeRendering.ToneMappedVolumeStyle")
TouchSensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.PointingDeviceSensor.TouchSensor")
Transform = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Grouping.Transform")
TransformSensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.EnvironmentalSensor.TransformSensor")
TransmitterPdu = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.DIS.TransmitterPdu")
TriangleFanSet = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Rendering.TriangleFanSet")
TriangleSet = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Rendering.TriangleSet")
TriangleSet2D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Geometry2D.TriangleSet2D")
TriangleStripSet = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Rendering.TriangleStripSet")
TwoSidedMaterial = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shape.TwoSidedMaterial")
UniversalJoint = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.RigidBodyPhysics.UniversalJoint")
UnlitMaterial = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Shape.UnlitMaterial")
Viewpoint = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Navigation.Viewpoint")
ViewpointGroup = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Navigation.ViewpointGroup")
Viewport = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Layering.Viewport")
VisibilitySensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.EnvironmentalSensor.VisibilitySensor")
VolumeData = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.VolumeRendering.VolumeData")
VolumeEmitter = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.ParticleSystems.VolumeEmitter")
VolumePickSensor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Picking.VolumePickSensor")
WaveShaper = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Sound.WaveShaper")
WindPhysicsModel = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.ParticleSystems.WindPhysicsModel")
WorldInfo = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.WorldInfo")
Component = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.component")
Connect = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.connect")
EXPORT = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Networking.EXPORT")
ExternProtoDeclare = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.ExternProtoDeclare")
Field = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.field")
FieldValue = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.fieldValue")
Head = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.head")
IMPORT = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Networking.IMPORT")
IS = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.IS")
Meta = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.meta")
ProtoBody = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.ProtoBody")
ProtoDeclare = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.ProtoDeclare")
ProtoInterface = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.ProtoInterface")
ROUTE = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.ROUTE")
Scene = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.Scene")
Unit = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.unit")
X3D = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.Core.X3D")
SFBool = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFBool")
MFBool = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFBool")
SFColor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFColor")
MFColor = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFColor")
SFColorRGBA = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFColorRGBA")
MFColorRGBA = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFColorRGBA")
SFDouble = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFDouble")
MFDouble = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFDouble")
SFFloat = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFFloat")
MFFloat = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFFloat")
SFImage = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFImage")
MFImage = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFImage")
SFInt32 = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFInt32")
MFInt32 = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFInt32")
SFMatrix3d = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFMatrix3d")
MFMatrix3d = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFMatrix3d")
SFMatrix3f = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFMatrix3f")
MFMatrix3f = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFMatrix3f")
SFMatrix4d = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFMatrix4d")
MFMatrix4d = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFMatrix4d")
SFMatrix4f = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFMatrix4f")
MFMatrix4f = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFMatrix4f")
SFString = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFString")
SFNode = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFNode")
MFNode = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFNode")
SFRotation = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFRotation")
MFRotation = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFRotation")
MFString = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFString")
SFTime = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFTime")
MFTime = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFTime")
SFVec2d = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFVec2d")
MFVec2d = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFVec2d")
SFVec2f = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFVec2f")
MFVec2f = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFVec2f")
SFVec3d = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFVec3d")
MFVec3d = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFVec3d")
SFVec3f = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFVec3f")
MFVec3f = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFVec3f")
SFVec4d = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFVec4d")
MFVec4d = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFVec4d")
SFVec4f = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.SFVec4f")
MFVec4f = JavaUtilities.get_proxy_class("org.web3d.x3d.jsail.fields.MFVec4f")
ConfigurationProperties.setDeleteIntermediateFiles(false);
ConfigurationProperties.setStripTrailingZeroes(true);
ConfigurationProperties.setStripDefaultAttributes(true);
ConfigurationProperties.setXsltEngine(Java::OrgWeb3dX3dJsail::ConfigurationProperties::XSLT_ENGINE_NATIVE_JAVA);
x3D0 = X3D.new
    .setProfile("Immersive")
    .setVersion("4.0")
    .setHead(Head.new()
        .addComponent(Component.new()
            .setName("HAnim")
            .setLevel(1)
        )
        .addMeta(Meta.new()
            .setName("title")
            .setContent("BoxMan3.x3d")
        )
        .addMeta(Meta.new()
            .setName("description")
            .setContent("A Seamless VRML Human, demonstrating the HAnim 2001 Specification, animation scripting via an external prototype (ExternProtoDeclare).")
        )
        .addMeta(Meta.new()
            .setName("creator")
            .setContent("James Smith - james@vapourtech.com")
        )
        .addMeta(Meta.new()
            .setName("translator")
            .setContent("Don Brutzman and Matt Beitler")
        )
        .addMeta(Meta.new()
            .setName("created")
            .setContent("1 March 2001")
        )
        .addMeta(Meta.new()
            .setName("translated")
            .setContent("19 October 2001")
        )
        .addMeta(Meta.new()
            .setName("modified")
            .setContent("Tue, 09 Sep 2025 19:37:50 GMT")
        )
        .addMeta(Meta.new()
            .setName("error")
            .setContent("Legacy model, not valid as X3D4 HAnim version 2.0 since HAnim version 1.0 has significant differences and is no longer directly supported")
        )
        .addMeta(Meta.new()
            .setName("reference")
            .setContent("http://HAnim.org")
        )
        .addMeta(Meta.new()
            .setName("reference")
            .setContent("originals/boxman.wrl")
        )
        .addMeta(Meta.new()
            .setName("reference")
            .setContent("BoxMan3.js")
        )
        .addMeta(Meta.new()
            .setName("reference")
            .setContent("BoxManAnimationPanel.x3d")
        )
        .addMeta(Meta.new()
            .setName("reference")
            .setContent("http://HAnim.org/Models/HAnim2001/boxman/boxman.wrl")
        )
        .addMeta(Meta.new()
            .setName("reference")
            .setContent("http://www.vapourtech.com/team/james/boxman.wrl")
        )
        .addMeta(Meta.new()
            .setName("reference")
            .setContent("http://HAnim.org/Specifications/HAnim2001")
        )
        .addMeta(Meta.new()
            .setName("reference")
            .setContent("http://HAnim.org/Models")
        )
        .addMeta(Meta.new()
            .setName("reference")
            .setContent("http://HAnim.org/Nodes")
        )
        .addMeta(Meta.new()
            .setName("reference")
            .setContent("https://www.web3d.org/x3d/content/X3dToVrml97.xslt")
        )
        .addMeta(Meta.new()
            .setName("reference")
            .setContent("http://www.vapourtech.com")
        )
        .addMeta(Meta.new()
            .setName("warning")
            .setContent("Skin mesh is split across multiple shapes within a Group, should that be allowed?")
        )
        .addMeta(Meta.new()
            .setName("TODO")
            .setContent("What does the original animation script accomplish? It is not hooked up, script source contains errors...")
        )
        .addMeta(Meta.new()
            .setName("TODO")
            .setContent("InstantReality Forum Issue: InstantReality is ignoring the Viewpoint nodes in the topmost HAnimSite. http://forum.instantreality.org")
        )
        .addMeta(Meta.new()
            .setName("Image")
            .setContent("BoxManViewInclined.png")
        )
        .addMeta(Meta.new()
            .setName("Image")
            .setContent("BoxManViewFront.png")
        )
        .addMeta(Meta.new()
            .setName("Image")
            .setContent("BoxManViewRight.png")
        )
        .addMeta(Meta.new()
            .setName("Image")
            .setContent("BoxManViewLeft.png")
        )
        .addMeta(Meta.new()
            .setName("Image")
            .setContent("BoxManViewTop.png")
        )
        .addMeta(Meta.new()
            .setName("rights")
            .setContent("(C) 2000 James Smith - james@vapourtech.com")
        )
        .addMeta(Meta.new()
            .setName("subject")
            .setContent("BoxMan HAnim 2.0")
        )
        .addMeta(Meta.new()
            .setName("identifier")
            .setContent("https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Legacy/BoxMan3.x3d")
        )
    )
    .setScene(Scene.new()
        .addChild(ExternProtoDeclare.new()
            .setName("LOA1_WalkAnimation")
            .setUrl(["../Prototypes/LOA1_WalkAnimation.x3d#LOA1_WalkAnimation", "https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Prototypes/LOA1_WalkAnimation.x3d#LOA1_WalkAnimation", "../Prototypes/LOA1_WalkAnimation.wrl#LOA1_WalkAnimation", "https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Prototypes/LOA1_WalkAnimation.wrl#LOA1_WalkAnimation"].to_java Java::java.lang.String)
            .addField(Field.new()
                .setAccessType("inputOutput")
                .setType("SFTime")
                .setName("cycleInterval")
            )
            .addField(Field.new()
                .setAccessType("inputOutput")
                .setType("SFBool")
                .setName("enabled")
            )
            .addField(Field.new()
                .setAccessType("inputOutput")
                .setType("SFBool")
                .setName("loop")
            )
            .addField(Field.new()
                .setAccessType("inputOutput")
                .setType("SFTime")
                .setName("startTime")
            )
            .addField(Field.new()
                .setAccessType("inputOutput")
                .setType("SFTime")
                .setName("stopTime")
            )
            .addField(Field.new()
                .setAccessType("outputOnly")
                .setType("SFFloat")
                .setName("fraction_changed")
            )
            .addField(Field.new()
                .setAccessType("outputOnly")
                .setType("SFVec3f")
                .setName("HumanoidRoot_translation_changed")
            )
            .addField(Field.new()
                .setAccessType("outputOnly")
                .setType("SFRotation")
                .setName("HumanoidRoot_rotation_changed")
            )
            .addField(Field.new()
                .setAccessType("outputOnly")
                .setType("SFRotation")
                .setName("l_hip_rotation_changed")
            )
            .addField(Field.new()
                .setAccessType("outputOnly")
                .setType("SFRotation")
                .setName("l_knee_rotation_changed")
            )
            .addField(Field.new()
                .setAccessType("outputOnly")
                .setType("SFRotation")
                .setName("l_ankle_rotation_changed")
            )
            .addField(Field.new()
                .setAccessType("outputOnly")
                .setType("SFRotation")
                .setName("l_midtarsal_rotation_changed")
            )
            .addField(Field.new()
                .setAccessType("outputOnly")
                .setType("SFRotation")
                .setName("r_hip_rotation_changed")
            )
            .addField(Field.new()
                .setAccessType("outputOnly")
                .setType("SFRotation")
                .setName("r_knee_rotation_changed")
            )
            .addField(Field.new()
                .setAccessType("outputOnly")
                .setType("SFRotation")
                .setName("r_ankle_rotation_changed")
            )
            .addField(Field.new()
                .setAccessType("outputOnly")
                .setType("SFRotation")
                .setName("r_midtarsal_rotation_changed")
            )
            .addField(Field.new()
                .setAccessType("outputOnly")
                .setType("SFRotation")
                .setName("vl5_rotation_changed")
            )
            .addField(Field.new()
                .setAccessType("outputOnly")
                .setType("SFRotation")
                .setName("skullbase_rotation_changed")
            )
            .addField(Field.new()
                .setAccessType("outputOnly")
                .setType("SFRotation")
                .setName("l_shoulder_rotation_changed")
            )
            .addField(Field.new()
                .setAccessType("outputOnly")
                .setType("SFRotation")
                .setName("l_elbow_rotation_changed")
            )
            .addField(Field.new()
                .setAccessType("outputOnly")
                .setType("SFRotation")
                .setName("l_wrist_rotation_changed")
            )
            .addField(Field.new()
                .setAccessType("outputOnly")
                .setType("SFRotation")
                .setName("r_shoulder_rotation_changed")
            )
            .addField(Field.new()
                .setAccessType("outputOnly")
                .setType("SFRotation")
                .setName("r_elbow_rotation_changed")
            )
            .addField(Field.new()
                .setAccessType("outputOnly")
                .setType("SFRotation")
                .setName("r_wrist_rotation_changed")
            )
            .addField(Field.new()
                .setAccessType("outputOnly")
                .setType("SFBool")
                .setName("isActive")
            )
            .addField(Field.new()
                .setAccessType("outputOnly")
                .setType("SFRotation")
                .setName("lower_body_rotation_changed")
            )
        )
        .addChild(WorldInfo.new()
            .setTitle("BoxMan3 - A Seamless VRML Human")
            .setInfo(["(C) 2000 James Smith - james@vapourtech.com", "http://www.vapourtech.com/team/james/boxman.wrl", "Blaxxun compatibility by Tu Lam - TuL@seamless-solutions.com"].to_java Java::java.lang.String)
        )
        .addChild(Background.new()
            .setSkyColor([0.75, 0.75, 0.75].to_java Java::float)
            .setGroundColor([0.6, 0.6, 0.6].to_java Java::float)
        )
        .addChild(HAnimHumanoid.new()
            .setDEF("boxman_Humanoid")
            .setName("Humanoid")
            .setInfo(["authorName=James Smith", "authorEmail=james@vapourtech.com", "copyright=(C) 2000 James Smith - james@vapourtech.com", "humanoidVersion=1.0"].to_java Java::java.lang.String)
            .setVersion("1.0")
            .addSkeleton(HAnimJoint.new()
                .setContainerFieldOverride("skeleton")
                .setDEF("boxman_humanoid_root")
                .setName("humanoid_root")
                .setCenter([0, 0.9723, -0.0728].to_java Java::float)
                .setSkinCoordIndex([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11].to_java Java::int)
                .setSkinCoordWeight([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1].to_java Java::float)
                .addChild(HAnimSegment.new()
                    .setDEF("boxman_sacrum")
                    .setName("sacrum")
                    .addChild(Transform.new()
                        .setTranslation([0, 0.9723, -0.0728].to_java Java::float)
                        .addChild(Shape.new()
                            .setDEF("SphereYellow")
                            .setAppearance(Appearance.new()
                                .setMaterial(Material.new()
                                    .setDiffuseColor([1, 1, 0].to_java Java::float)
                                )
                            )
                            .setGeometry(Sphere.new()
                                .setRadius(0.02)
                            )
                        )
                    )
                )
                .addChild(HAnimJoint.new()
                    .setDEF("boxman_l_hip")
                    .setName("l_hip")
                    .setCenter([0.0956, 0.9364, 0].to_java Java::float)
                    .setSkinCoordIndex([12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43].to_java Java::int)
                    .setSkinCoordWeight([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5].to_java Java::float)
                    .addChild(HAnimSegment.new()
                        .setDEF("boxman_l_thigh")
                        .setName("l_thigh")
                        .addChild(Transform.new()
                            .setTranslation([0.0956, 0.9364, 0].to_java Java::float)
                            .addChild(Shape.new()
                                .setUSE("SphereYellow")
                            )
                        )
                    )
                    .addChild(HAnimJoint.new()
                        .setDEF("boxman_l_knee")
                        .setName("l_knee")
                        .setCenter([0.0956, 0.5095, -0.0036].to_java Java::float)
                        .setSkinCoordIndex([36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63].to_java Java::int)
                        .setSkinCoordWeight([0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1].to_java Java::float)
                        .addChild(HAnimSegment.new()
                            .setDEF("boxman_l_calf")
                            .setName("l_calf")
                            .addChild(Transform.new()
                                .setTranslation([0.0956, 0.5095, -0.0036].to_java Java::float)
                                .addChild(Shape.new()
                                    .setUSE("SphereYellow")
                                )
                            )
                        )
                        .addChild(HAnimJoint.new()
                            .setDEF("boxman_l_ankle")
                            .setName("l_ankle")
                            .setCenter([0.0946, 0.0762, -0.0261].to_java Java::float)
                            .setSkinCoordIndex([64, 65, 66, 67, 68, 69, 70, 71].to_java Java::int)
                            .setSkinCoordWeight([1, 1, 1, 1, 1, 1, 1, 1].to_java Java::float)
                            .addChild(HAnimSegment.new()
                                .setDEF("boxman_l_hindfoot")
                                .setName("l_hindfoot")
                                .addChild(Transform.new()
                                    .setTranslation([0.0946, 0.0762, -0.0261].to_java Java::float)
                                    .addChild(Shape.new()
                                        .setUSE("SphereYellow")
                                    )
                                )
                            )
                            .addChild(HAnimJoint.new()
                                .setDEF("boxman_l_midtarsal")
                                .setName("l_midtarsal")
                                .setCenter([0.1079, 0.0317, 0.067].to_java Java::float)
                                .setSkinCoordIndex([72, 73, 74, 75, 76, 77, 78, 79].to_java Java::int)
                                .setSkinCoordWeight([1, 1, 1, 1, 1, 1, 1, 1].to_java Java::float)
                                .addChild(HAnimSegment.new()
                                    .setDEF("boxman_l_middistal")
                                    .setName("l_middistal")
                                    .addChild(Transform.new()
                                        .setTranslation([0.1079, 0.0317, 0.067].to_java Java::float)
                                        .addChild(Shape.new()
                                            .setUSE("SphereYellow")
                                        )
                                    )
                                    .addChild(HAnimSite.new()
                                        .setDEF("boxman_l_middistal_tip")
                                        .setName("l_middistal_tip")
                                        .setTranslation([0.095, 0.0005, 0.1924].to_java Java::float)
                                        .addChild(Shape.new()
                                            .setDEF("SphereRed")
                                            .setAppearance(Appearance.new()
                                                .setMaterial(Material.new()
                                                    .setDiffuseColor([1, 0, 0].to_java Java::float)
                                                )
                                            )
                                            .setGeometry(Sphere.new()
                                                .setRadius(0.02)
                                            )
                                        )
                                    )
                                )
                            )
                        )
                    )
                )
                .addChild(HAnimJoint.new()
                    .setDEF("boxman_r_hip")
                    .setName("r_hip")
                    .setCenter([-0.0956, 0.9364, 0].to_java Java::float)
                    .setSkinCoordIndex([80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111].to_java Java::int)
                    .setSkinCoordWeight([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5].to_java Java::float)
                    .addChild(HAnimSegment.new()
                        .setDEF("boxman_r_thigh")
                        .setName("r_thigh")
                        .addChild(Transform.new()
                            .setTranslation([-0.0956, 0.9364, 0].to_java Java::float)
                            .addChild(Shape.new()
                                .setUSE("SphereYellow")
                            )
                        )
                    )
                    .addChild(HAnimJoint.new()
                        .setDEF("boxman_r_knee")
                        .setName("r_knee")
                        .setCenter([-0.0956, 0.5095, -0.0036].to_java Java::float)
                        .setSkinCoordIndex([104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131].to_java Java::int)
                        .setSkinCoordWeight([0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1].to_java Java::float)
                        .addChild(HAnimSegment.new()
                            .setDEF("boxman_r_calf")
                            .setName("r_calf")
                            .addChild(Transform.new()
                                .setTranslation([-0.0956, 0.5095, -0.0036].to_java Java::float)
                                .addChild(Shape.new()
                                    .setUSE("SphereYellow")
                                )
                            )
                        )
                        .addChild(HAnimJoint.new()
                            .setDEF("boxman_r_ankle")
                            .setName("r_ankle")
                            .setCenter([-0.0946, 0.0762, -0.0261].to_java Java::float)
                            .setSkinCoordIndex([132, 133, 134, 135, 136, 137, 138, 139].to_java Java::int)
                            .setSkinCoordWeight([1, 1, 1, 1, 1, 1, 1, 1].to_java Java::float)
                            .addChild(HAnimSegment.new()
                                .setDEF("boxman_r_hindfoot")
                                .setName("r_hindfoot")
                                .addChild(Transform.new()
                                    .setTranslation([-0.0946, 0.0762, -0.0261].to_java Java::float)
                                    .addChild(Shape.new()
                                        .setUSE("SphereYellow")
                                    )
                                )
                            )
                            .addChild(HAnimJoint.new()
                                .setDEF("boxman_r_midtarsal")
                                .setName("r_midtarsal")
                                .setCenter([-0.1079, 0.0317, 0.067].to_java Java::float)
                                .setSkinCoordIndex([140, 141, 142, 143, 144, 145, 146, 147].to_java Java::int)
                                .setSkinCoordWeight([1, 1, 1, 1, 1, 1, 1, 1].to_java Java::float)
                                .addChild(HAnimSegment.new()
                                    .setDEF("boxman_r_middistal")
                                    .setName("r_middistal")
                                    .addChild(Transform.new()
                                        .setTranslation([-0.1079, 0.0317, 0.067].to_java Java::float)
                                        .addChild(Shape.new()
                                            .setUSE("SphereYellow")
                                        )
                                    )
                                    .addChild(HAnimSite.new()
                                        .setDEF("boxman_r_middistal_tip")
                                        .setName("r_middistal_tip")
                                        .setTranslation([-0.095, 0.0005, 0.1924].to_java Java::float)
                                        .addChild(Shape.new()
                                            .setUSE("SphereRed")
                                        )
                                    )
                                )
                            )
                        )
                    )
                )
                .addChild(HAnimJoint.new()
                    .setDEF("boxman_vl5")
                    .setName("vl5")
                    .setCenter([0, 1.0817, -0.0728].to_java Java::float)
                    .setSkinCoordIndex([148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167].to_java Java::int)
                    .setSkinCoordWeight([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1].to_java Java::float)
                    .addChild(HAnimSegment.new()
                        .setDEF("boxman_l5")
                        .setName("l5")
                        .addChild(Transform.new()
                            .setTranslation([0, 1.0817, -0.0728].to_java Java::float)
                            .addChild(Shape.new()
                                .setUSE("SphereYellow")
                            )
                        )
                    )
                    .addChild(HAnimJoint.new()
                        .setDEF("boxman_skullbase")
                        .setName("skullbase")
                        .setCenter([0, 1.644, 0.036].to_java Java::float)
                        .setSkinCoordIndex([168, 169, 170, 171, 172, 173, 174, 175].to_java Java::int)
                        .setSkinCoordWeight([1, 1, 1, 1, 1, 1, 1, 1].to_java Java::float)
                        .addChild(HAnimSegment.new()
                            .setDEF("boxman_skull")
                            .setName("skull")
                            .addChild(Transform.new()
                                .setTranslation([0, 1.644, 0.036].to_java Java::float)
                                .addChild(Shape.new()
                                    .setUSE("SphereYellow")
                                )
                            )
                            .addChild(HAnimSite.new()
                                .setDEF("boxman_skull_tip")
                                .setName("skull_tip")
                                .setTranslation([-0.0029, 1.7771, 0.0274].to_java Java::float)
                                .addChild(Shape.new()
                                    .setUSE("SphereYellow")
                                )
                            )
                        )
                    )
                    .addChild(HAnimJoint.new()
                        .setDEF("boxman_l_shoulder")
                        .setName("l_shoulder")
                        .setCenter([0.1968, 1.4642, -0.0265].to_java Java::float)
                        .setSkinCoordIndex([176, 177, 178, 179, 180, 181, 182, 183].to_java Java::int)
                        .setSkinCoordWeight([1, 1, 1, 1, 1, 1, 1, 1].to_java Java::float)
                        .addChild(HAnimSegment.new()
                            .setDEF("boxman_l_upperarm")
                            .setName("l_upperarm")
                            .addChild(Transform.new()
                                .setTranslation([0.1968, 1.4642, -0.0265].to_java Java::float)
                                .addChild(Shape.new()
                                    .setUSE("SphereYellow")
                                )
                            )
                        )
                        .addChild(HAnimJoint.new()
                            .setDEF("boxman_l_elbow")
                            .setName("l_elbow")
                            .setCenter([0.1982, 1.1622, -0.0557].to_java Java::float)
                            .setSkinCoordIndex([184, 185, 186, 187, 188, 189, 190, 191].to_java Java::int)
                            .setSkinCoordWeight([1, 1, 1, 1, 1, 1, 1, 1].to_java Java::float)
                            .addChild(HAnimSegment.new()
                                .setDEF("boxman_l_forearm")
                                .setName("l_forearm")
                                .addChild(Transform.new()
                                    .setTranslation([0.1982, 1.1622, -0.0557].to_java Java::float)
                                    .addChild(Shape.new()
                                        .setUSE("SphereYellow")
                                    )
                                )
                            )
                            .addChild(HAnimJoint.new()
                                .setDEF("boxman_l_wrist")
                                .setName("l_wrist")
                                .setCenter([0.1972, 0.8929, -0.069].to_java Java::float)
                                .setSkinCoordIndex([192, 193, 194, 195, 196, 197, 198, 199].to_java Java::int)
                                .setSkinCoordWeight([1, 1, 1, 1, 1, 1, 1, 1].to_java Java::float)
                                .addChild(HAnimSegment.new()
                                    .setDEF("boxman_l_hand")
                                    .setName("l_hand")
                                    .addChild(Transform.new()
                                        .setTranslation([0.1972, 0.8929, -0.069].to_java Java::float)
                                        .addChild(Shape.new()
                                            .setUSE("SphereYellow")
                                        )
                                    )
                                    .addChild(HAnimSite.new()
                                        .setDEF("boxman_l_hand_tip")
                                        .setName("l_hand_tip")
                                        .setTranslation([0.1912, 0.6976, -0.071].to_java Java::float)
                                        .addChild(Shape.new()
                                            .setUSE("SphereRed")
                                        )
                                    )
                                )
                            )
                        )
                    )
                    .addChild(HAnimJoint.new()
                        .setDEF("boxman_r_shoulder")
                        .setName("r_shoulder")
                        .setCenter([-0.1968, 1.4642, -0.0265].to_java Java::float)
                        .setSkinCoordIndex([200, 201, 202, 203, 204, 205, 206, 207].to_java Java::int)
                        .setSkinCoordWeight([1, 1, 1, 1, 1, 1, 1, 1].to_java Java::float)
                        .addChild(HAnimSegment.new()
                            .setDEF("boxman_r_upperarm")
                            .setName("r_upperarm")
                            .addChild(Transform.new()
                                .setTranslation([-0.1968, 1.4642, -0.0265].to_java Java::float)
                                .addChild(Shape.new()
                                    .setUSE("SphereYellow")
                                )
                            )
                        )
                        .addChild(HAnimJoint.new()
                            .setDEF("boxman_r_elbow")
                            .setName("r_elbow")
                            .setCenter([-0.1982, 1.1622, -0.0557].to_java Java::float)
                            .setSkinCoordIndex([208, 209, 210, 211, 212, 213, 214, 215].to_java Java::int)
                            .setSkinCoordWeight([1, 1, 1, 1, 1, 1, 1, 1].to_java Java::float)
                            .addChild(HAnimSegment.new()
                                .setDEF("boxman_r_forearm")
                                .setName("r_forearm")
                                .addChild(Transform.new()
                                    .setTranslation([-0.1982, 1.1622, -0.0557].to_java Java::float)
                                    .addChild(Shape.new()
                                        .setUSE("SphereYellow")
                                    )
                                )
                            )
                            .addChild(HAnimJoint.new()
                                .setDEF("boxman_r_wrist")
                                .setName("r_wrist")
                                .setCenter([-0.1972, 0.8929, -0.069].to_java Java::float)
                                .setSkinCoordIndex([216, 217, 218, 219, 220, 221, 222, 223].to_java Java::int)
                                .setSkinCoordWeight([1, 1, 1, 1, 1, 1, 1, 1].to_java Java::float)
                                .addChild(HAnimSegment.new()
                                    .setDEF("boxman_r_hand")
                                    .setName("r_hand")
                                    .addChild(Transform.new()
                                        .setTranslation([-0.1972, 0.8929, -0.069].to_java Java::float)
                                        .addChild(Shape.new()
                                            .setUSE("SphereYellow")
                                        )
                                    )
                                    .addChild(HAnimSite.new()
                                        .setDEF("boxman_r_hand_tip")
                                        .setName("r_hand_tip")
                                        .setTranslation([-0.1912, 0.6976, -0.071].to_java Java::float)
                                        .addChild(Shape.new()
                                            .setUSE("SphereRed")
                                        )
                                    )
                                )
                            )
                        )
                    )
                )
            )
            .addJoints(HAnimJoint.new()
                .setContainerFieldOverride("joints")
                .setUSE("boxman_humanoid_root")
            )
            .addJoints(HAnimJoint.new()
                .setContainerFieldOverride("joints")
                .setUSE("boxman_skullbase")
            )
            .addJoints(HAnimJoint.new()
                .setContainerFieldOverride("joints")
                .setUSE("boxman_vl5")
            )
            .addJoints(HAnimJoint.new()
                .setContainerFieldOverride("joints")
                .setUSE("boxman_l_ankle")
            )
            .addJoints(HAnimJoint.new()
                .setContainerFieldOverride("joints")
                .setUSE("boxman_r_ankle")
            )
            .addJoints(HAnimJoint.new()
                .setContainerFieldOverride("joints")
                .setUSE("boxman_l_elbow")
            )
            .addJoints(HAnimJoint.new()
                .setContainerFieldOverride("joints")
                .setUSE("boxman_r_elbow")
            )
            .addJoints(HAnimJoint.new()
                .setContainerFieldOverride("joints")
                .setUSE("boxman_l_hip")
            )
            .addJoints(HAnimJoint.new()
                .setContainerFieldOverride("joints")
                .setUSE("boxman_r_hip")
            )
            .addJoints(HAnimJoint.new()
                .setContainerFieldOverride("joints")
                .setUSE("boxman_l_knee")
            )
            .addJoints(HAnimJoint.new()
                .setContainerFieldOverride("joints")
                .setUSE("boxman_r_knee")
            )
            .addJoints(HAnimJoint.new()
                .setContainerFieldOverride("joints")
                .setUSE("boxman_l_midtarsal")
            )
            .addJoints(HAnimJoint.new()
                .setContainerFieldOverride("joints")
                .setUSE("boxman_r_midtarsal")
            )
            .addJoints(HAnimJoint.new()
                .setContainerFieldOverride("joints")
                .setUSE("boxman_l_shoulder")
            )
            .addJoints(HAnimJoint.new()
                .setContainerFieldOverride("joints")
                .setUSE("boxman_r_shoulder")
            )
            .addJoints(HAnimJoint.new()
                .setContainerFieldOverride("joints")
                .setUSE("boxman_l_wrist")
            )
            .addJoints(HAnimJoint.new()
                .setContainerFieldOverride("joints")
                .setUSE("boxman_r_wrist")
            )
            .addSegments(HAnimSegment.new()
                .setContainerFieldOverride("segments")
                .setUSE("boxman_l5")
            )
            .addSegments(HAnimSegment.new()
                .setContainerFieldOverride("segments")
                .setUSE("boxman_sacrum")
            )
            .addSegments(HAnimSegment.new()
                .setContainerFieldOverride("segments")
                .setUSE("boxman_skull")
            )
            .addSegments(HAnimSegment.new()
                .setContainerFieldOverride("segments")
                .setUSE("boxman_l_calf")
            )
            .addSegments(HAnimSegment.new()
                .setContainerFieldOverride("segments")
                .setUSE("boxman_r_calf")
            )
            .addSegments(HAnimSegment.new()
                .setContainerFieldOverride("segments")
                .setUSE("boxman_l_forearm")
            )
            .addSegments(HAnimSegment.new()
                .setContainerFieldOverride("segments")
                .setUSE("boxman_r_forearm")
            )
            .addSegments(HAnimSegment.new()
                .setContainerFieldOverride("segments")
                .setUSE("boxman_l_hand")
            )
            .addSegments(HAnimSegment.new()
                .setContainerFieldOverride("segments")
                .setUSE("boxman_r_hand")
            )
            .addSegments(HAnimSegment.new()
                .setContainerFieldOverride("segments")
                .setUSE("boxman_l_hindfoot")
            )
            .addSegments(HAnimSegment.new()
                .setContainerFieldOverride("segments")
                .setUSE("boxman_r_hindfoot")
            )
            .addSegments(HAnimSegment.new()
                .setContainerFieldOverride("segments")
                .setUSE("boxman_l_middistal")
            )
            .addSegments(HAnimSegment.new()
                .setContainerFieldOverride("segments")
                .setUSE("boxman_r_middistal")
            )
            .addSegments(HAnimSegment.new()
                .setContainerFieldOverride("segments")
                .setUSE("boxman_l_thigh")
            )
            .addSegments(HAnimSegment.new()
                .setContainerFieldOverride("segments")
                .setUSE("boxman_r_thigh")
            )
            .addSegments(HAnimSegment.new()
                .setContainerFieldOverride("segments")
                .setUSE("boxman_l_upperarm")
            )
            .addSegments(HAnimSegment.new()
                .setContainerFieldOverride("segments")
                .setUSE("boxman_r_upperarm")
            )
            .addSites(HAnimSite.new()
                .setContainerFieldOverride("sites")
                .setUSE("boxman_skull_tip")
            )
            .addSites(HAnimSite.new()
                .setContainerFieldOverride("sites")
                .setUSE("boxman_l_hand_tip")
            )
            .addSites(HAnimSite.new()
                .setContainerFieldOverride("sites")
                .setUSE("boxman_r_hand_tip")
            )
            .addSites(HAnimSite.new()
                .setContainerFieldOverride("sites")
                .setUSE("boxman_l_middistal_tip")
            )
            .addSites(HAnimSite.new()
                .setContainerFieldOverride("sites")
                .setUSE("boxman_r_middistal_tip")
            )
            .addViewpoints(HAnimSite.new()
                .setContainerFieldOverride("viewpoints")
                .setDEF("boxman_BoxMan_view")
                .setName("BoxMan_view")
                .addChild(Viewpoint.new()
                    .setDEF("Inclined_View")
                    .setDescription("Inclined View")
                    .setPosition([2, 0.9, 2].to_java Java::float)
                    .setOrientation([0, 1, 0, 0.78].to_java Java::float)
                )
                .addChild(Viewpoint.new()
                    .setDEF("Front_View")
                    .setDescription("Front View")
                    .setPosition([0, 1, 3].to_java Java::float)
                )
                .addChild(Viewpoint.new()
                    .setDEF("Right_View")
                    .setDescription("Right-side View")
                    .setPosition([-3, 1, 0].to_java Java::float)
                    .setOrientation([0, 1, 0, -1.57].to_java Java::float)
                )
                .addChild(Viewpoint.new()
                    .setDEF("Left_View")
                    .setDescription("Left-side View")
                    .setPosition([3, 1, 0].to_java Java::float)
                    .setOrientation([0, 1, 0, 1.57].to_java Java::float)
                )
                .addChild(Viewpoint.new()
                    .setDEF("Top_View")
                    .setDescription("Top View")
                    .setPosition([0, 3, 0].to_java Java::float)
                    .setOrientation([1, 0, 0, -1.57].to_java Java::float)
                )
            )
            .setSkinCoord(Coordinate.new()
                .setContainerFieldOverride("skinCoord")
                .setDEF("SKINCOORD")
                .setPoint([-0.05, 1, 0.05, 0.05, 1, 0.05, 0.03, 0.97, -0.1, -0.03, 0.97, -0.1, 0.03, 0.94, -0.075, -0.03, 0.94, -0.075, 0, 0.92, 0, 0, 0.94, 0.03, -0.12, 1.06, 0.05, 0.12, 1.06, 0.05, 0.12, 1.06, -0.1, -0.12, 1.06, -0.1, 0.0456, 0.9364, 0.05, 0.1456, 0.9364, 0.05, 0.1456, 0.9364, -0.05, 0.0456, 0.9364, -0.05, 0.0456, 0.9, 0.05, 0.1456, 0.9, 0.05, 0.1456, 0.9, -0.05, 0.0456, 0.9, -0.05, 0.0456, 0.8, 0.05, 0.1456, 0.8, 0.05, 0.1456, 0.8, -0.05, 0.0456, 0.8, -0.05, 0.0456, 0.7, 0.05, 0.1456, 0.7, 0.05, 0.1456, 0.7, -0.05, 0.0456, 0.7, -0.05, 0.0456, 0.6, 0.05, 0.1456, 0.6, 0.05, 0.1456, 0.6, -0.05, 0.0456, 0.6, -0.05, 0.0456, 0.55, 0.05, 0.1456, 0.55, 0.05, 0.1456, 0.55, -0.05, 0.0456, 0.55, -0.05, 0.0456, 0.52, 0.05, 0.1456, 0.52, 0.05, 0.1456, 0.52, -0.05, 0.0456, 0.52, -0.05, 0.0456, 0.5, 0.05, 0.1456, 0.5, 0.05, 0.1456, 0.5, -0.05, 0.0456, 0.5, -0.05, 0.0454, 0.43, 0.045, 0.1454, 0.43, 0.045, 0.1454, 0.43, -0.055, 0.0454, 0.43, -0.055, 0.0452, 0.36, 0.04, 0.1452, 0.36, 0.04, 0.1452, 0.36, -0.06, 0.0452, 0.36, -0.06, 0.045, 0.29, 0.035, 0.145, 0.29, 0.035, 0.145, 0.29, -0.065, 0.045, 0.29, -0.065, 0.0448, 0.21, 0.03, 0.1448, 0.21, 0.03, 0.1448, 0.21, -0.07, 0.0448, 0.21, -0.07, 0.0446, 0.1262, 0.025, 0.1446, 0.1262, 0.025, 0.1446, 0.1262, -0.075, 0.0446, 0.1262, -0.075, 0.0446, 0.0762, 0.025, 0.1446, 0.0762, 0.025, 0.1446, 0, -0.075, 0.0446, 0, -0.075, 0.0446, 0.0562, 0.057, 0.1446, 0.0562, 0.057, 0.1446, 0, 0.057, 0.0446, 0, 0.057, 0.0446, 0.0562, 0.087, 0.1446, 0.0562, 0.087, 0.1446, 0, 0.087, 0.0446, 0, 0.087, 0.0446, 0.0562, 0.1924, 0.1446, 0.0562, 0.1924, 0.1446, 0, 0.1924, 0.0446, 0, 0.1924, -0.0456, 0.9364, 0.05, -0.1456, 0.9364, 0.05, -0.1456, 0.9364, -0.05, -0.0456, 0.9364, -0.05, -0.0456, 0.9, 0.05, -0.1456, 0.9, 0.05, -0.1456, 0.9, -0.05, -0.0456, 0.9, -0.05, -0.0456, 0.8, 0.05, -0.1456, 0.8, 0.05, -0.1456, 0.8, -0.05, -0.0456, 0.8, -0.05, -0.0456, 0.7, 0.05, -0.1456, 0.7, 0.05, -0.1456, 0.7, -0.05, -0.0456, 0.7, -0.05, -0.0456, 0.6, 0.05, -0.1456, 0.6, 0.05, -0.1456, 0.6, -0.05, -0.0456, 0.6, -0.05, -0.0456, 0.55, 0.05, -0.1456, 0.55, 0.05, -0.1456, 0.55, -0.05, -0.0456, 0.55, -0.05, -0.0456, 0.52, 0.05, -0.1456, 0.52, 0.05, -0.1456, 0.52, -0.05, -0.0456, 0.52, -0.05, -0.0456, 0.5, 0.05, -0.1456, 0.5, 0.05, -0.1456, 0.5, -0.05, -0.0456, 0.5, -0.05, -0.0454, 0.43, 0.045, -0.1454, 0.43, 0.045, -0.1454, 0.43, -0.055, -0.0454, 0.43, -0.055, -0.0452, 0.36, 0.04, -0.1452, 0.36, 0.04, -0.1452, 0.36, -0.06, -0.0452, 0.36, -0.06, -0.045, 0.29, 0.035, -0.145, 0.29, 0.035, -0.145, 0.29, -0.065, -0.045, 0.29, -0.065, -0.0448, 0.21, 0.03, -0.1448, 0.21, 0.03, -0.1448, 0.21, -0.07, -0.0448, 0.21, -0.07, -0.0446, 0.1262, 0.025, -0.1446, 0.1262, 0.025, -0.1446, 0.1262, -0.075, -0.0446, 0.1262, -0.075, -0.0446, 0.0762, 0.025, -0.1446, 0.0762, 0.025, -0.1446, 0, -0.075, -0.0446, 0, -0.075, -0.0446, 0.0562, 0.057, -0.1446, 0.0562, 0.057, -0.1446, 0, 0.057, -0.0446, 0, 0.057, -0.0446, 0.0562, 0.087, -0.1446, 0.0562, 0.087, -0.1446, 0, 0.087, -0.0446, 0, 0.087, -0.0446, 0.0562, 0.1924, -0.1446, 0.0562, 0.1924, -0.1446, 0, 0.1924, -0.0446, 0, 0.1924, -0.12, 1.1, 0.05, 0.12, 1.1, 0.05, 0.12, 1.1, -0.1, -0.12, 1.1, -0.1, -0.14, 1.42, 0.045, 0.14, 1.42, 0.045, 0.14, 1.42, -0.09, -0.14, 1.42, -0.09, -0.24, 1.52, 0.035, 0.24, 1.52, 0.035, 0.24, 1.52, -0.09, -0.24, 1.52, -0.09, -0.05, 1.56, 0.03, 0.05, 1.56, 0.03, 0.05, 1.56, -0.06, -0.05, 1.56, -0.06, -0.05, 1.6, 0.06, 0.05, 1.6, 0.06, 0.05, 1.62, -0.03, -0.05, 1.62, -0.03, -0.07, 1.777, 0.13, 0.07, 1.777, 0.13, 0.07, 1.777, -0.03, -0.07, 1.777, -0.03, -0.07, 1.6, 0.13, 0.07, 1.6, 0.13, 0.07, 1.66, -0.03, -0.07, 1.66, -0.03, 0.16, 1.42, 0.015, 0.24, 1.5, 0.015, 0.24, 1.5, -0.075, 0.16, 1.42, -0.075, 0.17, 1.18, -0.025, 0.23, 1.18, -0.025, 0.23, 1.18, -0.085, 0.17, 1.18, -0.085, 0.17, 1.14, -0.025, 0.23, 1.14, -0.025, 0.23, 1.14, -0.085, 0.17, 1.14, -0.085, 0.18, 0.91, -0.05, 0.22, 0.91, -0.05, 0.22, 0.91, -0.09, 0.18, 0.91, -0.09, 0.18, 0.87, -0.02, 0.22, 0.87, -0.02, 0.22, 0.87, -0.1, 0.18, 0.87, -0.1, 0.18, 0.6976, -0.02, 0.22, 0.6976, -0.02, 0.22, 0.6976, -0.1, 0.18, 0.6976, -0.1, -0.16, 1.42, 0.015, -0.24, 1.5, 0.015, -0.24, 1.5, -0.075, -0.16, 1.42, -0.075, -0.17, 1.18, -0.025, -0.23, 1.18, -0.025, -0.23, 1.18, -0.085, -0.17, 1.18, -0.085, -0.17, 1.14, -0.025, -0.23, 1.14, -0.025, -0.23, 1.14, -0.085, -0.17, 1.14, -0.085, -0.18, 0.91, -0.05, -0.22, 0.91, -0.05, -0.22, 0.91, -0.09, -0.18, 0.91, -0.09, -0.18, 0.87, -0.02, -0.22, 0.87, -0.02, -0.22, 0.87, -0.1, -0.18, 0.87, -0.1, -0.18, 0.6976, -0.02, -0.22, 0.6976, -0.02, -0.22, 0.6976, -0.1, -0.18, 0.6976, -0.1].to_java Java::float)
            )
            .addSkin(Group.new()
                .setContainerFieldOverride("skin")
                .addChild(Shape.new()
                    .setDEF("TrouserSkin")
                    .setAppearance(Appearance.new()
                        .setMaterial(Material.new()
                            .setDiffuseColor([0, 0, 1].to_java Java::float)
                            .setTransparency(0.5)
                        )
                    )
                    .setGeometry(IndexedFaceSet.new()
                        .setCoordIndex([0, 7, 1, -1, 8, 0, 1, -1, 1, 9, 8, -1, 10, 2, 3, -1, 3, 11, 10, -1, 2, 4, 5, -1, 5, 3, 2, -1, 4, 6, 5, -1, 7, 12, 1, -1, 1, 12, 13, -1, 13, 9, 1, -1, 9, 13, 14, -1, 14, 10, 9, -1, 10, 14, 15, -1, 15, 2, 10, -1, 12, 7, 6, -1, 6, 15, 12, -1, 15, 6, 4, -1, 4, 2, 15, -1, 0, 80, 7, -1, 81, 80, 0, -1, 0, 8, 81, -1, 82, 81, 8, -1, 8, 11, 82, -1, 83, 82, 11, -1, 11, 3, 83, -1, 6, 7, 80, -1, 80, 83, 6, -1, 5, 6, 83, -1, 83, 3, 5, -1, 12, 16, 17, -1, 17, 13, 12, -1, 13, 17, 18, -1, 18, 14, 13, -1, 14, 18, 19, -1, 19, 15, 14, -1, 15, 19, 16, -1, 16, 12, 15, -1, 16, 20, 21, -1, 21, 17, 16, -1, 17, 21, 22, -1, 22, 18, 17, -1, 18, 22, 23, -1, 23, 19, 18, -1, 19, 23, 20, -1, 20, 16, 19, -1, 20, 24, 25, -1, 25, 21, 20, -1, 21, 25, 26, -1, 26, 22, 21, -1, 22, 26, 27, -1, 27, 23, 22, -1, 23, 27, 24, -1, 24, 20, 23, -1, 24, 28, 29, -1, 29, 25, 24, -1, 25, 29, 30, -1, 30, 26, 25, -1, 26, 30, 31, -1, 31, 27, 26, -1, 27, 31, 28, -1, 28, 24, 27, -1, 28, 32, 33, -1, 33, 29, 28, -1, 29, 33, 34, -1, 34, 30, 29, -1, 30, 34, 35, -1, 35, 31, 30, -1, 31, 35, 32, -1, 32, 28, 31, -1, 32, 36, 37, -1, 37, 33, 32, -1, 33, 37, 38, -1, 38, 34, 33, -1, 34, 38, 39, -1, 39, 35, 34, -1, 35, 39, 36, -1, 36, 32, 35, -1, 36, 40, 41, -1, 41, 37, 36, -1, 37, 41, 42, -1, 42, 38, 37, -1, 38, 42, 43, -1, 43, 39, 38, -1, 39, 43, 40, -1, 40, 36, 39, -1, 40, 44, 45, -1, 45, 41, 40, -1, 41, 45, 46, -1, 46, 42, 41, -1, 42, 46, 47, -1, 47, 43, 42, -1, 43, 47, 44, -1, 44, 40, 43, -1, 44, 48, 49, -1, 49, 45, 44, -1, 45, 49, 50, -1, 50, 46, 45, -1, 46, 50, 51, -1, 51, 47, 46, -1, 47, 51, 48, -1, 48, 44, 47, -1, 48, 52, 53, -1, 53, 49, 48, -1, 49, 53, 54, -1, 54, 50, 49, -1, 50, 54, 55, -1, 55, 51, 50, -1, 51, 55, 52, -1, 52, 48, 51, -1, 52, 56, 57, -1, 57, 53, 52, -1, 53, 57, 58, -1, 58, 54, 53, -1, 54, 58, 59, -1, 59, 55, 54, -1, 55, 59, 56, -1, 56, 52, 55, -1, 56, 60, 61, -1, 61, 57, 56, -1, 57, 61, 62, -1, 62, 58, 57, -1, 58, 62, 63, -1, 63, 59, 58, -1, 59, 63, 60, -1, 60, 56, 59, -1, 81, 85, 84, -1, 84, 80, 81, -1, 82, 86, 85, -1, 85, 81, 82, -1, 83, 87, 86, -1, 86, 82, 83, -1, 80, 84, 87, -1, 87, 83, 80, -1, 85, 89, 88, -1, 88, 84, 85, -1, 86, 90, 89, -1, 89, 85, 86, -1, 87, 91, 90, -1, 90, 86, 87, -1, 84, 88, 91, -1, 91, 87, 84, -1, 89, 93, 92, -1, 92, 88, 89, -1, 90, 94, 93, -1, 93, 89, 90, -1, 91, 95, 94, -1, 94, 90, 91, -1, 88, 92, 95, -1, 95, 91, 88, -1, 93, 97, 96, -1, 96, 92, 93, -1, 94, 98, 97, -1, 97, 93, 94, -1, 95, 99, 98, -1, 98, 94, 95, -1, 92, 96, 99, -1, 99, 95, 92, -1, 97, 101, 100, -1, 100, 96, 97, -1, 98, 102, 101, -1, 101, 97, 98, -1, 99, 103, 102, -1, 102, 98, 99, -1, 96, 100, 103, -1, 103, 99, 96, -1, 101, 105, 104, -1, 104, 100, 101, -1, 102, 106, 105, -1, 105, 101, 102, -1, 103, 107, 106, -1, 106, 102, 103, -1, 100, 104, 107, -1, 107, 103, 100, -1, 105, 109, 108, -1, 108, 104, 105, -1, 106, 110, 109, -1, 109, 105, 106, -1, 107, 111, 110, -1, 110, 106, 107, -1, 104, 108, 111, -1, 111, 107, 104, -1, 109, 113, 112, -1, 112, 108, 109, -1, 110, 114, 113, -1, 113, 109, 110, -1, 111, 115, 114, -1, 114, 110, 111, -1, 108, 112, 115, -1, 115, 111, 108, -1, 113, 117, 116, -1, 116, 112, 113, -1, 114, 118, 117, -1, 117, 113, 114, -1, 115, 119, 118, -1, 118, 114, 115, -1, 112, 116, 119, -1, 119, 115, 112, -1, 117, 121, 120, -1, 120, 116, 117, -1, 118, 122, 121, -1, 121, 117, 118, -1, 119, 123, 122, -1, 122, 118, 119, -1, 116, 120, 123, -1, 123, 119, 116, -1, 121, 125, 124, -1, 124, 120, 121, -1, 122, 126, 125, -1, 125, 121, 122, -1, 123, 127, 126, -1, 126, 122, 123, -1, 120, 124, 127, -1, 127, 123, 120, -1, 125, 129, 128, -1, 128, 124, 125, -1, 126, 130, 129, -1, 129, 125, 126, -1, 127, 131, 130, -1, 130, 126, 127, -1, 124, 128, 131, -1, 131, 127, 124, -1].to_java Java::int)
                        .setCoord(Coordinate.new()
                            .setUSE("SKINCOORD")
                        )
                    )
                )
                .addChild(Shape.new()
                    .setDEF("ShoeSkin")
                    .setAppearance(Appearance.new()
                        .setMaterial(Material.new()
                            .setDiffuseColor([0, 0, 0].to_java Java::float)
                            .setTransparency(0.5)
                        )
                    )
                    .setGeometry(IndexedFaceSet.new()
                        .setCoordIndex([60, 64, 65, -1, 65, 61, 60, -1, 61, 65, 66, -1, 66, 62, 61, -1, 62, 66, 67, -1, 67, 63, 62, -1, 63, 67, 64, -1, 64, 60, 63, -1, 64, 68, 69, -1, 69, 65, 64, -1, 65, 69, 70, -1, 70, 66, 65, -1, 66, 70, 71, -1, 71, 67, 66, -1, 67, 71, 68, -1, 68, 64, 67, -1, 68, 72, 73, -1, 73, 69, 68, -1, 69, 73, 74, -1, 74, 70, 69, -1, 70, 74, 75, -1, 75, 71, 70, -1, 71, 75, 72, -1, 72, 68, 71, -1, 72, 76, 77, -1, 77, 73, 72, -1, 73, 77, 78, -1, 78, 74, 73, -1, 74, 78, 79, -1, 79, 75, 74, -1, 75, 79, 76, -1, 76, 72, 75, -1, 76, 79, 78, -1, 78, 77, 76, -1, 129, 133, 132, -1, 132, 128, 129, -1, 130, 134, 133, -1, 133, 129, 130, -1, 131, 135, 134, -1, 134, 130, 131, -1, 128, 132, 135, -1, 135, 131, 128, -1, 133, 137, 136, -1, 136, 132, 133, -1, 134, 138, 137, -1, 137, 133, 134, -1, 135, 139, 138, -1, 138, 134, 135, -1, 132, 136, 139, -1, 139, 135, 132, -1, 137, 141, 140, -1, 140, 136, 137, -1, 138, 142, 141, -1, 141, 137, 138, -1, 139, 143, 142, -1, 142, 138, 139, -1, 136, 140, 143, -1, 143, 139, 136, -1, 141, 145, 144, -1, 144, 140, 141, -1, 142, 146, 145, -1, 145, 141, 142, -1, 143, 147, 146, -1, 146, 142, 143, -1, 140, 144, 147, -1, 147, 143, 140, -1, 145, 146, 147, -1, 147, 144, 145, -1].to_java Java::int)
                        .setCoord(Coordinate.new()
                            .setUSE("SKINCOORD")
                        )
                    )
                )
                .addChild(Shape.new()
                    .setDEF("ShirtSkin")
                    .setAppearance(Appearance.new()
                        .setMaterial(Material.new()
                            .setDiffuseColor([1, 1, 0].to_java Java::float)
                            .setTransparency(0.5)
                        )
                    )
                    .setGeometry(IndexedFaceSet.new()
                        .setCoordIndex([148, 8, 9, -1, 9, 149, 148, -1, 149, 9, 10, -1, 10, 150, 149, -1, 150, 10, 11, -1, 11, 151, 150, -1, 151, 11, 8, -1, 8, 148, 151, -1, 152, 148, 149, -1, 149, 153, 152, -1, 153, 149, 150, -1, 150, 154, 153, -1, 154, 150, 151, -1, 151, 155, 154, -1, 155, 151, 148, -1, 148, 152, 155, -1, 156, 152, 153, -1, 153, 157, 156, -1, 158, 154, 155, -1, 155, 159, 158, -1, 160, 156, 157, -1, 157, 161, 160, -1, 161, 157, 158, -1, 158, 162, 161, -1, 162, 158, 159, -1, 159, 163, 162, -1, 163, 159, 156, -1, 156, 160, 163, -1, 164, 160, 161, -1, 161, 165, 164, -1, 165, 161, 162, -1, 162, 166, 165, -1, 166, 162, 163, -1, 163, 167, 166, -1, 167, 163, 160, -1, 160, 164, 167, -1, 153, 176, 177, -1, 177, 157, 153, -1, 157, 177, 178, -1, 178, 158, 157, -1, 158, 178, 179, -1, 179, 154, 158, -1, 154, 179, 176, -1, 176, 153, 154, -1, 176, 180, 181, -1, 181, 177, 176, -1, 177, 181, 182, -1, 182, 178, 177, -1, 178, 182, 183, -1, 183, 179, 178, -1, 179, 183, 180, -1, 180, 176, 179, -1, 180, 184, 185, -1, 185, 181, 180, -1, 181, 185, 186, -1, 186, 182, 181, -1, 182, 186, 187, -1, 187, 183, 182, -1, 183, 187, 184, -1, 184, 180, 183, -1, 184, 188, 189, -1, 189, 185, 184, -1, 185, 189, 190, -1, 190, 186, 185, -1, 186, 190, 191, -1, 191, 187, 186, -1, 187, 191, 188, -1, 188, 184, 187, -1, 152, 156, 201, -1, 201, 200, 152, -1, 156, 159, 202, -1, 202, 201, 156, -1, 159, 155, 203, -1, 203, 202, 159, -1, 155, 152, 200, -1, 200, 203, 155, -1, 201, 205, 204, -1, 204, 200, 201, -1, 202, 206, 205, -1, 205, 201, 202, -1, 203, 207, 206, -1, 206, 202, 203, -1, 200, 204, 207, -1, 207, 203, 200, -1, 205, 209, 208, -1, 208, 204, 205, -1, 206, 210, 209, -1, 209, 205, 206, -1, 207, 211, 210, -1, 210, 206, 207, -1, 204, 208, 211, -1, 211, 207, 204, -1, 209, 213, 212, -1, 212, 208, 209, -1, 210, 214, 213, -1, 213, 209, 210, -1, 211, 215, 214, -1, 214, 210, 211, -1, 208, 212, 215, -1, 215, 211, 208, -1].to_java Java::int)
                        .setCoord(Coordinate.new()
                            .setUSE("SKINCOORD")
                        )
                    )
                )
                .addChild(Shape.new()
                    .setDEF("HeadHandsFleshToneSkin")
                    .setAppearance(Appearance.new()
                        .setMaterial(Material.new()
                            .setDiffuseColor([1, 0.75, 0.75].to_java Java::float)
                            .setTransparency(0.5)
                        )
                    )
                    .setGeometry(IndexedFaceSet.new()
                        .setCoordIndex([172, 164, 165, -1, 165, 173, 172, -1, 173, 165, 166, -1, 166, 174, 173, -1, 174, 166, 167, -1, 167, 175, 174, -1, 175, 167, 164, -1, 164, 172, 175, -1, 168, 172, 173, -1, 173, 169, 168, -1, 169, 173, 174, -1, 174, 170, 169, -1, 170, 174, 175, -1, 175, 171, 170, -1, 171, 175, 172, -1, 172, 168, 171, -1, 171, 168, 169, -1, 169, 170, 171, -1, 188, 192, 193, -1, 193, 189, 188, -1, 189, 193, 194, -1, 194, 190, 189, -1, 190, 194, 195, -1, 195, 191, 190, -1, 191, 195, 192, -1, 192, 188, 191, -1, 192, 196, 197, -1, 197, 193, 192, -1, 193, 197, 198, -1, 198, 194, 193, -1, 194, 198, 199, -1, 199, 195, 194, -1, 195, 199, 196, -1, 196, 192, 195, -1, 196, 199, 198, -1, 198, 197, 196, -1, 213, 217, 216, -1, 216, 212, 213, -1, 214, 218, 217, -1, 217, 213, 214, -1, 215, 219, 218, -1, 218, 214, 215, -1, 212, 216, 219, -1, 219, 215, 212, -1, 217, 221, 220, -1, 220, 216, 217, -1, 218, 222, 221, -1, 221, 217, 218, -1, 219, 223, 222, -1, 222, 218, 219, -1, 216, 220, 223, -1, 223, 219, 216, -1, 221, 222, 223, -1, 223, 220, 221, -1].to_java Java::int)
                        .setCoord(Coordinate.new()
                            .setUSE("SKINCOORD")
                        )
                    )
                )
                .addChild(Shape.new()
                    .setDEF("SkinLines")
                    .setAppearance(Appearance.new()
                        .setMaterial(Material.new()
                            .setDiffuseColor([0, 0, 0].to_java Java::float)
                        )
                    )
                    .setGeometry(IndexedLineSet.new()
                        .setCoordIndex([0, 7, 1, -1, 8, 0, 1, -1, 1, 9, 8, -1, 10, 2, 3, -1, 3, 11, 10, -1, 2, 4, 5, -1, 5, 3, 2, -1, 4, 6, 5, -1, 7, 12, 1, -1, 1, 12, 13, -1, 13, 9, 1, -1, 9, 13, 14, -1, 14, 10, 9, -1, 10, 14, 15, -1, 15, 2, 10, -1, 12, 7, 6, -1, 6, 15, 12, -1, 15, 6, 4, -1, 4, 2, 15, -1, 0, 80, 7, -1, 81, 80, 0, -1, 0, 8, 81, -1, 82, 81, 8, -1, 8, 11, 82, -1, 83, 82, 11, -1, 11, 3, 83, -1, 6, 7, 80, -1, 80, 83, 6, -1, 5, 6, 83, -1, 83, 3, 5, -1, 12, 16, 17, -1, 17, 13, 12, -1, 13, 17, 18, -1, 18, 14, 13, -1, 14, 18, 19, -1, 19, 15, 14, -1, 15, 19, 16, -1, 16, 12, 15, -1, 16, 20, 21, -1, 21, 17, 16, -1, 17, 21, 22, -1, 22, 18, 17, -1, 18, 22, 23, -1, 23, 19, 18, -1, 19, 23, 20, -1, 20, 16, 19, -1, 20, 24, 25, -1, 25, 21, 20, -1, 21, 25, 26, -1, 26, 22, 21, -1, 22, 26, 27, -1, 27, 23, 22, -1, 23, 27, 24, -1, 24, 20, 23, -1, 24, 28, 29, -1, 29, 25, 24, -1, 25, 29, 30, -1, 30, 26, 25, -1, 26, 30, 31, -1, 31, 27, 26, -1, 27, 31, 28, -1, 28, 24, 27, -1, 28, 32, 33, -1, 33, 29, 28, -1, 29, 33, 34, -1, 34, 30, 29, -1, 30, 34, 35, -1, 35, 31, 30, -1, 31, 35, 32, -1, 32, 28, 31, -1, 32, 36, 37, -1, 37, 33, 32, -1, 33, 37, 38, -1, 38, 34, 33, -1, 34, 38, 39, -1, 39, 35, 34, -1, 35, 39, 36, -1, 36, 32, 35, -1, 36, 40, 41, -1, 41, 37, 36, -1, 37, 41, 42, -1, 42, 38, 37, -1, 38, 42, 43, -1, 43, 39, 38, -1, 39, 43, 40, -1, 40, 36, 39, -1, 40, 44, 45, -1, 45, 41, 40, -1, 41, 45, 46, -1, 46, 42, 41, -1, 42, 46, 47, -1, 47, 43, 42, -1, 43, 47, 44, -1, 44, 40, 43, -1, 44, 48, 49, -1, 49, 45, 44, -1, 45, 49, 50, -1, 50, 46, 45, -1, 46, 50, 51, -1, 51, 47, 46, -1, 47, 51, 48, -1, 48, 44, 47, -1, 48, 52, 53, -1, 53, 49, 48, -1, 49, 53, 54, -1, 54, 50, 49, -1, 50, 54, 55, -1, 55, 51, 50, -1, 51, 55, 52, -1, 52, 48, 51, -1, 52, 56, 57, -1, 57, 53, 52, -1, 53, 57, 58, -1, 58, 54, 53, -1, 54, 58, 59, -1, 59, 55, 54, -1, 55, 59, 56, -1, 56, 52, 55, -1, 56, 60, 61, -1, 61, 57, 56, -1, 57, 61, 62, -1, 62, 58, 57, -1, 58, 62, 63, -1, 63, 59, 58, -1, 59, 63, 60, -1, 60, 56, 59, -1, 81, 85, 84, -1, 84, 80, 81, -1, 82, 86, 85, -1, 85, 81, 82, -1, 83, 87, 86, -1, 86, 82, 83, -1, 80, 84, 87, -1, 87, 83, 80, -1, 85, 89, 88, -1, 88, 84, 85, -1, 86, 90, 89, -1, 89, 85, 86, -1, 87, 91, 90, -1, 90, 86, 87, -1, 84, 88, 91, -1, 91, 87, 84, -1, 89, 93, 92, -1, 92, 88, 89, -1, 90, 94, 93, -1, 93, 89, 90, -1, 91, 95, 94, -1, 94, 90, 91, -1, 88, 92, 95, -1, 95, 91, 88, -1, 93, 97, 96, -1, 96, 92, 93, -1, 94, 98, 97, -1, 97, 93, 94, -1, 95, 99, 98, -1, 98, 94, 95, -1, 92, 96, 99, -1, 99, 95, 92, -1, 97, 101, 100, -1, 100, 96, 97, -1, 98, 102, 101, -1, 101, 97, 98, -1, 99, 103, 102, -1, 102, 98, 99, -1, 96, 100, 103, -1, 103, 99, 96, -1, 101, 105, 104, -1, 104, 100, 101, -1, 102, 106, 105, -1, 105, 101, 102, -1, 103, 107, 106, -1, 106, 102, 103, -1, 100, 104, 107, -1, 107, 103, 100, -1, 105, 109, 108, -1, 108, 104, 105, -1, 106, 110, 109, -1, 109, 105, 106, -1, 107, 111, 110, -1, 110, 106, 107, -1, 104, 108, 111, -1, 111, 107, 104, -1, 109, 113, 112, -1, 112, 108, 109, -1, 110, 114, 113, -1, 113, 109, 110, -1, 111, 115, 114, -1, 114, 110, 111, -1, 108, 112, 115, -1, 115, 111, 108, -1, 113, 117, 116, -1, 116, 112, 113, -1, 114, 118, 117, -1, 117, 113, 114, -1, 115, 119, 118, -1, 118, 114, 115, -1, 112, 116, 119, -1, 119, 115, 112, -1, 117, 121, 120, -1, 120, 116, 117, -1, 118, 122, 121, -1, 121, 117, 118, -1, 119, 123, 122, -1, 122, 118, 119, -1, 116, 120, 123, -1, 123, 119, 116, -1, 121, 125, 124, -1, 124, 120, 121, -1, 122, 126, 125, -1, 125, 121, 122, -1, 123, 127, 126, -1, 126, 122, 123, -1, 120, 124, 127, -1, 127, 123, 120, -1, 125, 129, 128, -1, 128, 124, 125, -1, 126, 130, 129, -1, 129, 125, 126, -1, 127, 131, 130, -1, 130, 126, 127, -1, 124, 128, 131, -1, 131, 127, 124, -1, 60, 64, 65, -1, 65, 61, 60, -1, 61, 65, 66, -1, 66, 62, 61, -1, 62, 66, 67, -1, 67, 63, 62, -1, 63, 67, 64, -1, 64, 60, 63, -1, 64, 68, 69, -1, 69, 65, 64, -1, 65, 69, 70, -1, 70, 66, 65, -1, 66, 70, 71, -1, 71, 67, 66, -1, 67, 71, 68, -1, 68, 64, 67, -1, 68, 72, 73, -1, 73, 69, 68, -1, 69, 73, 74, -1, 74, 70, 69, -1, 70, 74, 75, -1, 75, 71, 70, -1, 71, 75, 72, -1, 72, 68, 71, -1, 72, 76, 77, -1, 77, 73, 72, -1, 73, 77, 78, -1, 78, 74, 73, -1, 74, 78, 79, -1, 79, 75, 74, -1, 75, 79, 76, -1, 76, 72, 75, -1, 76, 79, 78, -1, 78, 77, 76, -1, 129, 133, 132, -1, 132, 128, 129, -1, 130, 134, 133, -1, 133, 129, 130, -1, 131, 135, 134, -1, 134, 130, 131, -1, 128, 132, 135, -1, 135, 131, 128, -1, 133, 137, 136, -1, 136, 132, 133, -1, 134, 138, 137, -1, 137, 133, 134, -1, 135, 139, 138, -1, 138, 134, 135, -1, 132, 136, 139, -1, 139, 135, 132, -1, 137, 141, 140, -1, 140, 136, 137, -1, 138, 142, 141, -1, 141, 137, 138, -1, 139, 143, 142, -1, 142, 138, 139, -1, 136, 140, 143, -1, 143, 139, 136, -1, 141, 145, 144, -1, 144, 140, 141, -1, 142, 146, 145, -1, 145, 141, 142, -1, 143, 147, 146, -1, 146, 142, 143, -1, 140, 144, 147, -1, 147, 143, 140, -1, 145, 146, 147, -1, 147, 144, 145, -1, 148, 8, 9, -1, 9, 149, 148, -1, 149, 9, 10, -1, 10, 150, 149, -1, 150, 10, 11, -1, 11, 151, 150, -1, 151, 11, 8, -1, 8, 148, 151, -1, 152, 148, 149, -1, 149, 153, 152, -1, 153, 149, 150, -1, 150, 154, 153, -1, 154, 150, 151, -1, 151, 155, 154, -1, 155, 151, 148, -1, 148, 152, 155, -1, 156, 152, 153, -1, 153, 157, 156, -1, 158, 154, 155, -1, 155, 159, 158, -1, 160, 156, 157, -1, 157, 161, 160, -1, 161, 157, 158, -1, 158, 162, 161, -1, 162, 158, 159, -1, 159, 163, 162, -1, 163, 159, 156, -1, 156, 160, 163, -1, 164, 160, 161, -1, 161, 165, 164, -1, 165, 161, 162, -1, 162, 166, 165, -1, 166, 162, 163, -1, 163, 167, 166, -1, 167, 163, 160, -1, 160, 164, 167, -1, 153, 176, 177, -1, 177, 157, 153, -1, 157, 177, 178, -1, 178, 158, 157, -1, 158, 178, 179, -1, 179, 154, 158, -1, 154, 179, 176, -1, 176, 153, 154, -1, 176, 180, 181, -1, 181, 177, 176, -1, 177, 181, 182, -1, 182, 178, 177, -1, 178, 182, 183, -1, 183, 179, 178, -1, 179, 183, 180, -1, 180, 176, 179, -1, 180, 184, 185, -1, 185, 181, 180, -1, 181, 185, 186, -1, 186, 182, 181, -1, 182, 186, 187, -1, 187, 183, 182, -1, 183, 187, 184, -1, 184, 180, 183, -1, 184, 188, 189, -1, 189, 185, 184, -1, 185, 189, 190, -1, 190, 186, 185, -1, 186, 190, 191, -1, 191, 187, 186, -1, 187, 191, 188, -1, 188, 184, 187, -1, 152, 156, 201, -1, 201, 200, 152, -1, 156, 159, 202, -1, 202, 201, 156, -1, 159, 155, 203, -1, 203, 202, 159, -1, 155, 152, 200, -1, 200, 203, 155, -1, 201, 205, 204, -1, 204, 200, 201, -1, 202, 206, 205, -1, 205, 201, 202, -1, 203, 207, 206, -1, 206, 202, 203, -1, 200, 204, 207, -1, 207, 203, 200, -1, 205, 209, 208, -1, 208, 204, 205, -1, 206, 210, 209, -1, 209, 205, 206, -1, 207, 211, 210, -1, 210, 206, 207, -1, 204, 208, 211, -1, 211, 207, 204, -1, 209, 213, 212, -1, 212, 208, 209, -1, 210, 214, 213, -1, 213, 209, 210, -1, 211, 215, 214, -1, 214, 210, 211, -1, 208, 212, 215, -1, 215, 211, 208, -1, 172, 164, 165, -1, 165, 173, 172, -1, 173, 165, 166, -1, 166, 174, 173, -1, 174, 166, 167, -1, 167, 175, 174, -1, 175, 167, 164, -1, 164, 172, 175, -1, 168, 172, 173, -1, 173, 169, 168, -1, 169, 173, 174, -1, 174, 170, 169, -1, 170, 174, 175, -1, 175, 171, 170, -1, 171, 175, 172, -1, 172, 168, 171, -1, 171, 168, 169, -1, 169, 170, 171, -1, 188, 192, 193, -1, 193, 189, 188, -1, 189, 193, 194, -1, 194, 190, 189, -1, 190, 194, 195, -1, 195, 191, 190, -1, 191, 195, 192, -1, 192, 188, 191, -1, 192, 196, 197, -1, 197, 193, 192, -1, 193, 197, 198, -1, 198, 194, 193, -1, 194, 198, 199, -1, 199, 195, 194, -1, 195, 199, 196, -1, 196, 192, 195, -1, 196, 199, 198, -1, 198, 197, 196, -1, 213, 217, 216, -1, 216, 212, 213, -1, 214, 218, 217, -1, 217, 213, 214, -1, 215, 219, 218, -1, 218, 214, 215, -1, 212, 216, 219, -1, 219, 215, 212, -1, 217, 221, 220, -1, 220, 216, 217, -1, 218, 222, 221, -1, 221, 217, 218, -1, 219, 223, 222, -1, 222, 218, 219, -1, 216, 220, 223, -1, 223, 219, 216, -1, 221, 222, 223, -1, 223, 220, 221, -1].to_java Java::int)
                        .setCoord(Coordinate.new()
                            .setUSE("SKINCOORD")
                        )
                    )
                )
            )
        )
        .addChild(ProtoInstance.new()
            .setDEF("ANIMATOR")
            .setName("LOA1_WalkAnimation")
        )
        .addChild(Script.new()
            .setDEF("ENGINE")
            .setUrl(["BoxMan3.js", "https://www.web3d.org/x3d/content/examples/HumanoidAnimation/Legacy/BoxMan3.js"].to_java Java::java.lang.String)
            .setDirectOutput(true)
            .addField(Field.new()
                .setAccessType("inputOnly")
                .setType("SFRotation")
                .setName("update")
            )
            .addField(Field.new()
                .setAccessType("initializeOnly")
                .setType("SFNode")
                .setName("humanoid")
                .addChild(HAnimHumanoid.new()
                    .setUSE("boxman_Humanoid")
                )
            )
            .addField(Field.new()
                .setAccessType("initializeOnly")
                .setType("MFVec3f")
                .setName("coordList")
            )
            .addField(Field.new()
                .setAccessType("initializeOnly")
                .setType("SFNode")
                .setName("joint")
            )
            .addField(Field.new()
                .setAccessType("initializeOnly")
                .setType("SFVec3f")
                .setName("translation")
            )
            .addField(Field.new()
                .setAccessType("initializeOnly")
                .setType("SFRotation")
                .setName("rotation")
            )
            .addField(Field.new()
                .setAccessType("initializeOnly")
                .setType("SFVec3f")
                .setName("scale")
                .setValue("1 1 1")
            )
        )
        .addChild(ROUTE.new()
            .setFromNode("ANIMATOR")
            .setFromField("HumanoidRoot_translation_changed")
            .setToNode("boxman_humanoid_root")
            .setToField("set_translation")
        )
        .addChild(ROUTE.new()
            .setFromNode("ANIMATOR")
            .setFromField("HumanoidRoot_rotation_changed")
            .setToNode("boxman_humanoid_root")
            .setToField("set_rotation")
        )
        .addChild(ROUTE.new()
            .setFromNode("ANIMATOR")
            .setFromField("l_hip_rotation_changed")
            .setToNode("boxman_l_hip")
            .setToField("set_rotation")
        )
        .addChild(ROUTE.new()
            .setFromNode("ANIMATOR")
            .setFromField("l_knee_rotation_changed")
            .setToNode("boxman_l_knee")
            .setToField("set_rotation")
        )
        .addChild(ROUTE.new()
            .setFromNode("ANIMATOR")
            .setFromField("l_ankle_rotation_changed")
            .setToNode("boxman_l_ankle")
            .setToField("set_rotation")
        )
        .addChild(ROUTE.new()
            .setFromNode("ANIMATOR")
            .setFromField("l_midtarsal_rotation_changed")
            .setToNode("boxman_l_midtarsal")
            .setToField("set_rotation")
        )
        .addChild(ROUTE.new()
            .setFromNode("ANIMATOR")
            .setFromField("r_hip_rotation_changed")
            .setToNode("boxman_r_hip")
            .setToField("set_rotation")
        )
        .addChild(ROUTE.new()
            .setFromNode("ANIMATOR")
            .setFromField("r_knee_rotation_changed")
            .setToNode("boxman_r_knee")
            .setToField("set_rotation")
        )
        .addChild(ROUTE.new()
            .setFromNode("ANIMATOR")
            .setFromField("r_ankle_rotation_changed")
            .setToNode("boxman_r_ankle")
            .setToField("set_rotation")
        )
        .addChild(ROUTE.new()
            .setFromNode("ANIMATOR")
            .setFromField("r_midtarsal_rotation_changed")
            .setToNode("boxman_r_midtarsal")
            .setToField("set_rotation")
        )
        .addChild(ROUTE.new()
            .setFromNode("ANIMATOR")
            .setFromField("vl5_rotation_changed")
            .setToNode("boxman_vl5")
            .setToField("set_rotation")
        )
        .addChild(ROUTE.new()
            .setFromNode("ANIMATOR")
            .setFromField("skullbase_rotation_changed")
            .setToNode("boxman_skullbase")
            .setToField("set_rotation")
        )
        .addChild(ROUTE.new()
            .setFromNode("ANIMATOR")
            .setFromField("l_shoulder_rotation_changed")
            .setToNode("boxman_l_shoulder")
            .setToField("set_rotation")
        )
        .addChild(ROUTE.new()
            .setFromNode("ANIMATOR")
            .setFromField("l_elbow_rotation_changed")
            .setToNode("boxman_l_elbow")
            .setToField("set_rotation")
        )
        .addChild(ROUTE.new()
            .setFromNode("ANIMATOR")
            .setFromField("l_wrist_rotation_changed")
            .setToNode("boxman_l_wrist")
            .setToField("set_rotation")
        )
        .addChild(ROUTE.new()
            .setFromNode("ANIMATOR")
            .setFromField("r_shoulder_rotation_changed")
            .setToNode("boxman_r_shoulder")
            .setToField("set_rotation")
        )
        .addChild(ROUTE.new()
            .setFromNode("ANIMATOR")
            .setFromField("r_elbow_rotation_changed")
            .setToNode("boxman_r_elbow")
            .setToField("set_rotation")
        )
        .addChild(ROUTE.new()
            .setFromNode("ANIMATOR")
            .setFromField("r_wrist_rotation_changed")
            .setToNode("boxman_r_wrist")
            .setToField("set_rotation")
        )
    )
x3D0.toFileX3D "../data/BoxMan3.new.jruby.x3d"
x3D0.toFileJSON "../data/BoxMan3.new.jruby.json"
