[x3d-public] JSweet translation of X3DJSAIL to JavaScript: need specific design goals first

John Carlson yottzumm at gmail.com
Fri Apr 10 21:20:52 PDT 2020


This seems to be a better version, that uses require correctly.  My next
email will be an example that actually works!.

John

On Fri, Apr 10, 2020 at 10:34 PM John Carlson <yottzumm at gmail.com> wrote:

> A real quick copy paste of autoclass.py and some tweaks produce the
> following JavaScript file (runs).  I welcome your tests. Currently, one
> must add "Sync" after method call names, but I think there's a way to
> override that.  You may find that running asynchronously may lead to
> issues, not sure.
>
> If this seems like a good approach, I will start work on a JavaScript
> serializer.
>
> This code ran last time I tried it.
>
> I think we may have to put this into a module, and reference all classes
> from a root. "x3d"?
>
> var java = require('java');
> java.options.push("-Djava.awt.headless=true");
> java.options.push("-Xmx1000m");
>
> //java.options.push('-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005');
>
> java.classpath.push("X3DJSAIL.3.3.full.jar");
>
> var CommentsBlock = java.import('org.web3d.x3d.jsail.Core.CommentsBlock');
> var Anchor = java.import('org.web3d.x3d.jsail.Networking.AnchorObject');
> var Appearance = java.import('org.web3d.x3d.jsail.Shape.AppearanceObject');
> var Arc2D = java.import('org.web3d.x3d.jsail.Geometry2D.Arc2DObject');
> var ArcClose2D =
> java.import('org.web3d.x3d.jsail.Geometry2D.ArcClose2DObject');
> var AudioClip = java.import('org.web3d.x3d.jsail.Sound.AudioClipObject');
> var Background =
> java.import('org.web3d.x3d.jsail.EnvironmentalEffects.BackgroundObject');
> var BallJoint =
> java.import('org.web3d.x3d.jsail.RigidBodyPhysics.BallJointObject');
> var Billboard =
> java.import('org.web3d.x3d.jsail.Navigation.BillboardObject');
> var BlendedVolumeStyle =
> java.import('org.web3d.x3d.jsail.VolumeRendering.BlendedVolumeStyleObject');
> var BooleanFilter =
> java.import('org.web3d.x3d.jsail.EventUtilities.BooleanFilterObject');
> var BooleanSequencer =
> java.import('org.web3d.x3d.jsail.EventUtilities.BooleanSequencerObject');
> var BooleanToggle =
> java.import('org.web3d.x3d.jsail.EventUtilities.BooleanToggleObject');
> var BooleanTrigger =
> java.import('org.web3d.x3d.jsail.EventUtilities.BooleanTriggerObject');
> var BoundaryEnhancementVolumeStyle =
> java.import('org.web3d.x3d.jsail.VolumeRendering.BoundaryEnhancementVolumeStyleObject');
> var BoundedPhysicsModel =
> java.import('org.web3d.x3d.jsail.ParticleSystems.BoundedPhysicsModelObject');
> var Box = java.import('org.web3d.x3d.jsail.Geometry3D.BoxObject');
> var CADAssembly =
> java.import('org.web3d.x3d.jsail.CADGeometry.CADAssemblyObject');
> var CADFace = java.import('org.web3d.x3d.jsail.CADGeometry.CADFaceObject');
> var CADLayer =
> java.import('org.web3d.x3d.jsail.CADGeometry.CADLayerObject');
> var CADPart = java.import('org.web3d.x3d.jsail.CADGeometry.CADPartObject');
> var CartoonVolumeStyle =
> java.import('org.web3d.x3d.jsail.VolumeRendering.CartoonVolumeStyleObject');
> var Circle2D =
> java.import('org.web3d.x3d.jsail.Geometry2D.Circle2DObject');
> var ClipPlane =
> java.import('org.web3d.x3d.jsail.Rendering.ClipPlaneObject');
> var CollidableOffset =
> java.import('org.web3d.x3d.jsail.RigidBodyPhysics.CollidableOffsetObject');
> var CollidableShape =
> java.import('org.web3d.x3d.jsail.RigidBodyPhysics.CollidableShapeObject');
> var Collision =
> java.import('org.web3d.x3d.jsail.Navigation.CollisionObject');
> var CollisionCollection =
> java.import('org.web3d.x3d.jsail.RigidBodyPhysics.CollisionCollectionObject');
> var CollisionSensor =
> java.import('org.web3d.x3d.jsail.RigidBodyPhysics.CollisionSensorObject');
> var CollisionSpace =
> java.import('org.web3d.x3d.jsail.RigidBodyPhysics.CollisionSpaceObject');
> var Color = java.import('org.web3d.x3d.jsail.Rendering.ColorObject');
> var ColorChaser =
> java.import('org.web3d.x3d.jsail.Followers.ColorChaserObject');
> var ColorDamper =
> java.import('org.web3d.x3d.jsail.Followers.ColorDamperObject');
> var ColorInterpolator =
> java.import('org.web3d.x3d.jsail.Interpolation.ColorInterpolatorObject');
> var ColorRGBA =
> java.import('org.web3d.x3d.jsail.Rendering.ColorRGBAObject');
> var ComposedCubeMapTexture =
> java.import('org.web3d.x3d.jsail.CubeMapTexturing.ComposedCubeMapTextureObject');
> var ComposedShader =
> java.import('org.web3d.x3d.jsail.Shaders.ComposedShaderObject');
> var ComposedTexture3D =
> java.import('org.web3d.x3d.jsail.Texturing3D.ComposedTexture3DObject');
> var ComposedVolumeStyle =
> java.import('org.web3d.x3d.jsail.VolumeRendering.ComposedVolumeStyleObject');
> var Cone = java.import('org.web3d.x3d.jsail.Geometry3D.ConeObject');
> var ConeEmitter =
> java.import('org.web3d.x3d.jsail.ParticleSystems.ConeEmitterObject');
> var Contact =
> java.import('org.web3d.x3d.jsail.RigidBodyPhysics.ContactObject');
> var Contour2D = java.import('org.web3d.x3d.jsail.NURBS.Contour2DObject');
> var ContourPolyline2D =
> java.import('org.web3d.x3d.jsail.NURBS.ContourPolyline2DObject');
> var Coordinate =
> java.import('org.web3d.x3d.jsail.Rendering.CoordinateObject');
> var CoordinateChaser =
> java.import('org.web3d.x3d.jsail.Followers.CoordinateChaserObject');
> var CoordinateDamper =
> java.import('org.web3d.x3d.jsail.Followers.CoordinateDamperObject');
> var CoordinateDouble =
> java.import('org.web3d.x3d.jsail.NURBS.CoordinateDoubleObject');
> var CoordinateInterpolator =
> java.import('org.web3d.x3d.jsail.Interpolation.CoordinateInterpolatorObject');
> var CoordinateInterpolator2D =
> java.import('org.web3d.x3d.jsail.Interpolation.CoordinateInterpolator2DObject');
> var Cylinder =
> java.import('org.web3d.x3d.jsail.Geometry3D.CylinderObject');
> var CylinderSensor =
> java.import('org.web3d.x3d.jsail.PointingDeviceSensor.CylinderSensorObject');
> var DirectionalLight =
> java.import('org.web3d.x3d.jsail.Lighting.DirectionalLightObject');
> var DISEntityManager =
> java.import('org.web3d.x3d.jsail.DIS.DISEntityManagerObject');
> var DISEntityTypeMapping =
> java.import('org.web3d.x3d.jsail.DIS.DISEntityTypeMappingObject');
> var Disk2D = java.import('org.web3d.x3d.jsail.Geometry2D.Disk2DObject');
> var DoubleAxisHingeJoint =
> java.import('org.web3d.x3d.jsail.RigidBodyPhysics.DoubleAxisHingeJointObject');
> var EaseInEaseOut =
> java.import('org.web3d.x3d.jsail.Interpolation.EaseInEaseOutObject');
> var EdgeEnhancementVolumeStyle =
> java.import('org.web3d.x3d.jsail.VolumeRendering.EdgeEnhancementVolumeStyleObject');
> var ElevationGrid =
> java.import('org.web3d.x3d.jsail.Geometry3D.ElevationGridObject');
> var EspduTransform =
> java.import('org.web3d.x3d.jsail.DIS.EspduTransformObject');
> var ExplosionEmitter =
> java.import('org.web3d.x3d.jsail.ParticleSystems.ExplosionEmitterObject');
> var Extrusion =
> java.import('org.web3d.x3d.jsail.Geometry3D.ExtrusionObject');
> var FillProperties =
> java.import('org.web3d.x3d.jsail.Shape.FillPropertiesObject');
> var FloatVertexAttribute =
> java.import('org.web3d.x3d.jsail.Shaders.FloatVertexAttributeObject');
> var Fog =
> java.import('org.web3d.x3d.jsail.EnvironmentalEffects.FogObject');
> var FogCoordinate =
> java.import('org.web3d.x3d.jsail.EnvironmentalEffects.FogCoordinateObject');
> var FontStyle = java.import('org.web3d.x3d.jsail.Text.FontStyleObject');
> var ForcePhysicsModel =
> java.import('org.web3d.x3d.jsail.ParticleSystems.ForcePhysicsModelObject');
> var GeneratedCubeMapTexture =
> java.import('org.web3d.x3d.jsail.CubeMapTexturing.GeneratedCubeMapTextureObject');
> var GeoCoordinate =
> java.import('org.web3d.x3d.jsail.Geospatial.GeoCoordinateObject');
> var GeoElevationGrid =
> java.import('org.web3d.x3d.jsail.Geospatial.GeoElevationGridObject');
> var GeoLocation =
> java.import('org.web3d.x3d.jsail.Geospatial.GeoLocationObject');
> var GeoLOD = java.import('org.web3d.x3d.jsail.Geospatial.GeoLODObject');
> var GeoMetadata =
> java.import('org.web3d.x3d.jsail.Geospatial.GeoMetadataObject');
> var GeoOrigin =
> java.import('org.web3d.x3d.jsail.Geospatial.GeoOriginObject');
> var GeoPositionInterpolator =
> java.import('org.web3d.x3d.jsail.Geospatial.GeoPositionInterpolatorObject');
> var GeoProximitySensor =
> java.import('org.web3d.x3d.jsail.Geospatial.GeoProximitySensorObject');
> var GeoTouchSensor =
> java.import('org.web3d.x3d.jsail.Geospatial.GeoTouchSensorObject');
> var GeoTransform =
> java.import('org.web3d.x3d.jsail.Geospatial.GeoTransformObject');
> var GeoViewpoint =
> java.import('org.web3d.x3d.jsail.Geospatial.GeoViewpointObject');
> var Group = java.import('org.web3d.x3d.jsail.Grouping.GroupObject');
> var HAnimDisplacer =
> java.import('org.web3d.x3d.jsail.HAnim.HAnimDisplacerObject');
> var HAnimHumanoid =
> java.import('org.web3d.x3d.jsail.HAnim.HAnimHumanoidObject');
> var HAnimJoint = java.import('org.web3d.x3d.jsail.HAnim.HAnimJointObject');
> var HAnimSegment =
> java.import('org.web3d.x3d.jsail.HAnim.HAnimSegmentObject');
> var HAnimSite = java.import('org.web3d.x3d.jsail.HAnim.HAnimSiteObject');
> var ImageCubeMapTexture =
> java.import('org.web3d.x3d.jsail.CubeMapTexturing.ImageCubeMapTextureObject');
> var ImageTexture =
> java.import('org.web3d.x3d.jsail.Texturing.ImageTextureObject');
> var ImageTexture3D =
> java.import('org.web3d.x3d.jsail.Texturing3D.ImageTexture3DObject');
> var IndexedFaceSet =
> java.import('org.web3d.x3d.jsail.Geometry3D.IndexedFaceSetObject');
> var IndexedLineSet =
> java.import('org.web3d.x3d.jsail.Rendering.IndexedLineSetObject');
> var IndexedQuadSet =
> java.import('org.web3d.x3d.jsail.CADGeometry.IndexedQuadSetObject');
> var IndexedTriangleFanSet =
> java.import('org.web3d.x3d.jsail.Rendering.IndexedTriangleFanSetObject');
> var IndexedTriangleSet =
> java.import('org.web3d.x3d.jsail.Rendering.IndexedTriangleSetObject');
> var IndexedTriangleStripSet =
> java.import('org.web3d.x3d.jsail.Rendering.IndexedTriangleStripSetObject');
> var Inline = java.import('org.web3d.x3d.jsail.Networking.InlineObject');
> var IntegerSequencer =
> java.import('org.web3d.x3d.jsail.EventUtilities.IntegerSequencerObject');
> var IntegerTrigger =
> java.import('org.web3d.x3d.jsail.EventUtilities.IntegerTriggerObject');
> var IsoSurfaceVolumeData =
> java.import('org.web3d.x3d.jsail.VolumeRendering.IsoSurfaceVolumeDataObject');
> var KeySensor =
> java.import('org.web3d.x3d.jsail.KeyDeviceSensor.KeySensorObject');
> var Layer = java.import('org.web3d.x3d.jsail.Layering.LayerObject');
> var LayerSet = java.import('org.web3d.x3d.jsail.Layering.LayerSetObject');
> var Layout = java.import('org.web3d.x3d.jsail.Layout.LayoutObject');
> var LayoutGroup =
> java.import('org.web3d.x3d.jsail.Layout.LayoutGroupObject');
> var LayoutLayer =
> java.import('org.web3d.x3d.jsail.Layout.LayoutLayerObject');
> var LinePickSensor =
> java.import('org.web3d.x3d.jsail.Picking.LinePickSensorObject');
> var LineProperties =
> java.import('org.web3d.x3d.jsail.Shape.LinePropertiesObject');
> var LineSet = java.import('org.web3d.x3d.jsail.Rendering.LineSetObject');
> var LoadSensor =
> java.import('org.web3d.x3d.jsail.Networking.LoadSensorObject');
> var LocalFog =
> java.import('org.web3d.x3d.jsail.EnvironmentalEffects.LocalFogObject');
> var LOD = java.import('org.web3d.x3d.jsail.Navigation.LODObject');
> var Material = java.import('org.web3d.x3d.jsail.Shape.MaterialObject');
> var Matrix3VertexAttribute =
> java.import('org.web3d.x3d.jsail.Shaders.Matrix3VertexAttributeObject');
> var Matrix4VertexAttribute =
> java.import('org.web3d.x3d.jsail.Shaders.Matrix4VertexAttributeObject');
> var MetadataBoolean =
> java.import('org.web3d.x3d.jsail.Core.MetadataBooleanObject');
> var MetadataDouble =
> java.import('org.web3d.x3d.jsail.Core.MetadataDoubleObject');
> var MetadataFloat =
> java.import('org.web3d.x3d.jsail.Core.MetadataFloatObject');
> var MetadataInteger =
> java.import('org.web3d.x3d.jsail.Core.MetadataIntegerObject');
> var MetadataSet =
> java.import('org.web3d.x3d.jsail.Core.MetadataSetObject');
> var MetadataString =
> java.import('org.web3d.x3d.jsail.Core.MetadataStringObject');
> var MotorJoint =
> java.import('org.web3d.x3d.jsail.RigidBodyPhysics.MotorJointObject');
> var MovieTexture =
> java.import('org.web3d.x3d.jsail.Texturing.MovieTextureObject');
> var MultiTexture =
> java.import('org.web3d.x3d.jsail.Texturing.MultiTextureObject');
> var MultiTextureCoordinate =
> java.import('org.web3d.x3d.jsail.Texturing.MultiTextureCoordinateObject');
> var MultiTextureTransform =
> java.import('org.web3d.x3d.jsail.Texturing.MultiTextureTransformObject');
> var NavigationInfo =
> java.import('org.web3d.x3d.jsail.Navigation.NavigationInfoObject');
> var Normal = java.import('org.web3d.x3d.jsail.Rendering.NormalObject');
> var NormalInterpolator =
> java.import('org.web3d.x3d.jsail.Interpolation.NormalInterpolatorObject');
> var NurbsCurve = java.import('org.web3d.x3d.jsail.NURBS.NurbsCurveObject');
> var NurbsCurve2D =
> java.import('org.web3d.x3d.jsail.NURBS.NurbsCurve2DObject');
> var NurbsOrientationInterpolator =
> java.import('org.web3d.x3d.jsail.NURBS.NurbsOrientationInterpolatorObject');
> var NurbsPatchSurface =
> java.import('org.web3d.x3d.jsail.NURBS.NurbsPatchSurfaceObject');
> var NurbsPositionInterpolator =
> java.import('org.web3d.x3d.jsail.NURBS.NurbsPositionInterpolatorObject');
> var NurbsSet = java.import('org.web3d.x3d.jsail.NURBS.NurbsSetObject');
> var NurbsSurfaceInterpolator =
> java.import('org.web3d.x3d.jsail.NURBS.NurbsSurfaceInterpolatorObject');
> var NurbsSweptSurface =
> java.import('org.web3d.x3d.jsail.NURBS.NurbsSweptSurfaceObject');
> var NurbsSwungSurface =
> java.import('org.web3d.x3d.jsail.NURBS.NurbsSwungSurfaceObject');
> var NurbsTextureCoordinate =
> java.import('org.web3d.x3d.jsail.NURBS.NurbsTextureCoordinateObject');
> var NurbsTrimmedSurface =
> java.import('org.web3d.x3d.jsail.NURBS.NurbsTrimmedSurfaceObject');
> var OpacityMapVolumeStyle =
> java.import('org.web3d.x3d.jsail.VolumeRendering.OpacityMapVolumeStyleObject');
> var OrientationChaser =
> java.import('org.web3d.x3d.jsail.Followers.OrientationChaserObject');
> var OrientationDamper =
> java.import('org.web3d.x3d.jsail.Followers.OrientationDamperObject');
> var OrientationInterpolator =
> java.import('org.web3d.x3d.jsail.Interpolation.OrientationInterpolatorObject');
> var OrthoViewpoint =
> java.import('org.web3d.x3d.jsail.Navigation.OrthoViewpointObject');
> var PackagedShader =
> java.import('org.web3d.x3d.jsail.Shaders.PackagedShaderObject');
> var ParticleSystem =
> java.import('org.web3d.x3d.jsail.ParticleSystems.ParticleSystemObject');
> var PickableGroup =
> java.import('org.web3d.x3d.jsail.Picking.PickableGroupObject');
> var PixelTexture =
> java.import('org.web3d.x3d.jsail.Texturing.PixelTextureObject');
> var PixelTexture3D =
> java.import('org.web3d.x3d.jsail.Texturing3D.PixelTexture3DObject');
> var PlaneSensor =
> java.import('org.web3d.x3d.jsail.PointingDeviceSensor.PlaneSensorObject');
> var PointEmitter =
> java.import('org.web3d.x3d.jsail.ParticleSystems.PointEmitterObject');
> var PointLight =
> java.import('org.web3d.x3d.jsail.Lighting.PointLightObject');
> var PointPickSensor =
> java.import('org.web3d.x3d.jsail.Picking.PointPickSensorObject');
> var PointSet = java.import('org.web3d.x3d.jsail.Rendering.PointSetObject');
> var Polyline2D =
> java.import('org.web3d.x3d.jsail.Geometry2D.Polyline2DObject');
> var PolylineEmitter =
> java.import('org.web3d.x3d.jsail.ParticleSystems.PolylineEmitterObject');
> var Polypoint2D =
> java.import('org.web3d.x3d.jsail.Geometry2D.Polypoint2DObject');
> var PositionChaser =
> java.import('org.web3d.x3d.jsail.Followers.PositionChaserObject');
> var PositionChaser2D =
> java.import('org.web3d.x3d.jsail.Followers.PositionChaser2DObject');
> var PositionDamper =
> java.import('org.web3d.x3d.jsail.Followers.PositionDamperObject');
> var PositionDamper2D =
> java.import('org.web3d.x3d.jsail.Followers.PositionDamper2DObject');
> var PositionInterpolator =
> java.import('org.web3d.x3d.jsail.Interpolation.PositionInterpolatorObject');
> var PositionInterpolator2D =
> java.import('org.web3d.x3d.jsail.Interpolation.PositionInterpolator2DObject');
> var PrimitivePickSensor =
> java.import('org.web3d.x3d.jsail.Picking.PrimitivePickSensorObject');
> var ProgramShader =
> java.import('org.web3d.x3d.jsail.Shaders.ProgramShaderObject');
> var ProjectionVolumeStyle =
> java.import('org.web3d.x3d.jsail.VolumeRendering.ProjectionVolumeStyleObject');
> var ProtoInstance =
> java.import('org.web3d.x3d.jsail.Core.ProtoInstanceObject');
> var ProximitySensor =
> java.import('org.web3d.x3d.jsail.EnvironmentalSensor.ProximitySensorObject');
> var QuadSet = java.import('org.web3d.x3d.jsail.CADGeometry.QuadSetObject');
> var ReceiverPdu = java.import('org.web3d.x3d.jsail.DIS.ReceiverPduObject');
> var Rectangle2D =
> java.import('org.web3d.x3d.jsail.Geometry2D.Rectangle2DObject');
> var RigidBody =
> java.import('org.web3d.x3d.jsail.RigidBodyPhysics.RigidBodyObject');
> var RigidBodyCollection =
> java.import('org.web3d.x3d.jsail.RigidBodyPhysics.RigidBodyCollectionObject');
> var ScalarChaser =
> java.import('org.web3d.x3d.jsail.Followers.ScalarChaserObject');
> var ScalarDamper =
> java.import('org.web3d.x3d.jsail.Followers.ScalarDamperObject');
> var ScalarInterpolator =
> java.import('org.web3d.x3d.jsail.Interpolation.ScalarInterpolatorObject');
> var ScreenFontStyle =
> java.import('org.web3d.x3d.jsail.Layout.ScreenFontStyleObject');
> var ScreenGroup =
> java.import('org.web3d.x3d.jsail.Layout.ScreenGroupObject');
> var Script = java.import('org.web3d.x3d.jsail.Scripting.ScriptObject');
> var SegmentedVolumeData =
> java.import('org.web3d.x3d.jsail.VolumeRendering.SegmentedVolumeDataObject');
> var ShadedVolumeStyle =
> java.import('org.web3d.x3d.jsail.VolumeRendering.ShadedVolumeStyleObject');
> var ShaderPart =
> java.import('org.web3d.x3d.jsail.Shaders.ShaderPartObject');
> var ShaderProgram =
> java.import('org.web3d.x3d.jsail.Shaders.ShaderProgramObject');
> var Shape = java.import('org.web3d.x3d.jsail.Shape.ShapeObject');
> var SignalPdu = java.import('org.web3d.x3d.jsail.DIS.SignalPduObject');
> var SilhouetteEnhancementVolumeStyle =
> java.import('org.web3d.x3d.jsail.VolumeRendering.SilhouetteEnhancementVolumeStyleObject');
> var SingleAxisHingeJoint =
> java.import('org.web3d.x3d.jsail.RigidBodyPhysics.SingleAxisHingeJointObject');
> var SliderJoint =
> java.import('org.web3d.x3d.jsail.RigidBodyPhysics.SliderJointObject');
> var Sound = java.import('org.web3d.x3d.jsail.Sound.SoundObject');
> var Sphere = java.import('org.web3d.x3d.jsail.Geometry3D.SphereObject');
> var SphereSensor =
> java.import('org.web3d.x3d.jsail.PointingDeviceSensor.SphereSensorObject');
> var SplinePositionInterpolator =
> java.import('org.web3d.x3d.jsail.Interpolation.SplinePositionInterpolatorObject');
> var SplinePositionInterpolator2D =
> java.import('org.web3d.x3d.jsail.Interpolation.SplinePositionInterpolator2DObject');
> var SplineScalarInterpolator =
> java.import('org.web3d.x3d.jsail.Interpolation.SplineScalarInterpolatorObject');
> var SpotLight =
> java.import('org.web3d.x3d.jsail.Lighting.SpotLightObject');
> var SquadOrientationInterpolator =
> java.import('org.web3d.x3d.jsail.Interpolation.SquadOrientationInterpolatorObject');
> var StaticGroup =
> java.import('org.web3d.x3d.jsail.Grouping.StaticGroupObject');
> var StringSensor =
> java.import('org.web3d.x3d.jsail.KeyDeviceSensor.StringSensorObject');
> var SurfaceEmitter =
> java.import('org.web3d.x3d.jsail.ParticleSystems.SurfaceEmitterObject');
> var Switch = java.import('org.web3d.x3d.jsail.Grouping.SwitchObject');
> var TexCoordChaser2D =
> java.import('org.web3d.x3d.jsail.Followers.TexCoordChaser2DObject');
> var TexCoordDamper2D =
> java.import('org.web3d.x3d.jsail.Followers.TexCoordDamper2DObject');
> var Text = java.import('org.web3d.x3d.jsail.Text.TextObject');
> var TextureBackground =
> java.import('org.web3d.x3d.jsail.EnvironmentalEffects.TextureBackgroundObject');
> var TextureCoordinate =
> java.import('org.web3d.x3d.jsail.Texturing.TextureCoordinateObject');
> var TextureCoordinate3D =
> java.import('org.web3d.x3d.jsail.Texturing3D.TextureCoordinate3DObject');
> var TextureCoordinate4D =
> java.import('org.web3d.x3d.jsail.Texturing3D.TextureCoordinate4DObject');
> var TextureCoordinateGenerator =
> java.import('org.web3d.x3d.jsail.Texturing.TextureCoordinateGeneratorObject');
> var TextureProperties =
> java.import('org.web3d.x3d.jsail.Texturing.TexturePropertiesObject');
> var TextureTransform =
> java.import('org.web3d.x3d.jsail.Texturing.TextureTransformObject');
> var TextureTransform3D =
> java.import('org.web3d.x3d.jsail.Texturing3D.TextureTransform3DObject');
> var TextureTransformMatrix3D =
> java.import('org.web3d.x3d.jsail.Texturing3D.TextureTransformMatrix3DObject');
> var TimeSensor = java.import('org.web3d.x3d.jsail.Time.TimeSensorObject');
> var TimeTrigger =
> java.import('org.web3d.x3d.jsail.EventUtilities.TimeTriggerObject');
> var ToneMappedVolumeStyle =
> java.import('org.web3d.x3d.jsail.VolumeRendering.ToneMappedVolumeStyleObject');
> var TouchSensor =
> java.import('org.web3d.x3d.jsail.PointingDeviceSensor.TouchSensorObject');
> var Transform =
> java.import('org.web3d.x3d.jsail.Grouping.TransformObject');
> var TransformSensor =
> java.import('org.web3d.x3d.jsail.EnvironmentalSensor.TransformSensorObject');
> var TransmitterPdu =
> java.import('org.web3d.x3d.jsail.DIS.TransmitterPduObject');
> var TriangleFanSet =
> java.import('org.web3d.x3d.jsail.Rendering.TriangleFanSetObject');
> var TriangleSet =
> java.import('org.web3d.x3d.jsail.Rendering.TriangleSetObject');
> var TriangleSet2D =
> java.import('org.web3d.x3d.jsail.Geometry2D.TriangleSet2DObject');
> var TriangleStripSet =
> java.import('org.web3d.x3d.jsail.Rendering.TriangleStripSetObject');
> var TwoSidedMaterial =
> java.import('org.web3d.x3d.jsail.Shape.TwoSidedMaterialObject');
> var UniversalJoint =
> java.import('org.web3d.x3d.jsail.RigidBodyPhysics.UniversalJointObject');
> var Viewpoint =
> java.import('org.web3d.x3d.jsail.Navigation.ViewpointObject');
> var ViewpointGroup =
> java.import('org.web3d.x3d.jsail.Navigation.ViewpointGroupObject');
> var Viewport = java.import('org.web3d.x3d.jsail.Layering.ViewportObject');
> var VisibilitySensor =
> java.import('org.web3d.x3d.jsail.EnvironmentalSensor.VisibilitySensorObject');
> var VolumeData =
> java.import('org.web3d.x3d.jsail.VolumeRendering.VolumeDataObject');
> var VolumeEmitter =
> java.import('org.web3d.x3d.jsail.ParticleSystems.VolumeEmitterObject');
> var VolumePickSensor =
> java.import('org.web3d.x3d.jsail.Picking.VolumePickSensorObject');
> var WindPhysicsModel =
> java.import('org.web3d.x3d.jsail.ParticleSystems.WindPhysicsModelObject');
> var WorldInfo = java.import('org.web3d.x3d.jsail.Core.WorldInfoObject');
> var component = java.import('org.web3d.x3d.jsail.Core.componentObject');
> var connect = java.import('org.web3d.x3d.jsail.Core.connectObject');
> var EXPORT = java.import('org.web3d.x3d.jsail.Networking.EXPORTObject');
> var ExternProtoDeclare =
> java.import('org.web3d.x3d.jsail.Core.ExternProtoDeclareObject');
> var field = java.import('org.web3d.x3d.jsail.Core.fieldObject');
> var fieldValue = java.import('org.web3d.x3d.jsail.Core.fieldValueObject');
> var head = java.import('org.web3d.x3d.jsail.Core.headObject');
> var IMPORT = java.import('org.web3d.x3d.jsail.Networking.IMPORTObject');
> var IS = java.import('org.web3d.x3d.jsail.Core.ISObject');
> var meta = java.import('org.web3d.x3d.jsail.Core.metaObject');
> var ProtoBody = java.import('org.web3d.x3d.jsail.Core.ProtoBodyObject');
> var ProtoDeclare =
> java.import('org.web3d.x3d.jsail.Core.ProtoDeclareObject');
> var ProtoInterface =
> java.import('org.web3d.x3d.jsail.Core.ProtoInterfaceObject');
> var ROUTE = java.import('org.web3d.x3d.jsail.Core.ROUTEObject');
> var Scene = java.import('org.web3d.x3d.jsail.Core.SceneObject');
> var unit = java.import('org.web3d.x3d.jsail.Core.unitObject');
> var X3D = java.import('org.web3d.x3d.jsail.Core.X3DObject');
> var SFBool = java.import('org.web3d.x3d.jsail.fields.SFBoolObject');
> var MFBool = java.import('org.web3d.x3d.jsail.fields.MFBoolObject');
> var SFColor = java.import('org.web3d.x3d.jsail.fields.SFColorObject');
> var MFColor = java.import('org.web3d.x3d.jsail.fields.MFColorObject');
> var SFColorRGBA =
> java.import('org.web3d.x3d.jsail.fields.SFColorRGBAObject');
> var MFColorRGBA =
> java.import('org.web3d.x3d.jsail.fields.MFColorRGBAObject');
> var SFDouble = java.import('org.web3d.x3d.jsail.fields.SFDoubleObject');
> var MFDouble = java.import('org.web3d.x3d.jsail.fields.MFDoubleObject');
> var SFFloat = java.import('org.web3d.x3d.jsail.fields.SFFloatObject');
> var MFFloat = java.import('org.web3d.x3d.jsail.fields.MFFloatObject');
> var SFImage = java.import('org.web3d.x3d.jsail.fields.SFImageObject');
> var MFImage = java.import('org.web3d.x3d.jsail.fields.MFImageObject');
> var SFInt32 = java.import('org.web3d.x3d.jsail.fields.SFInt32Object');
> var MFInt32 = java.import('org.web3d.x3d.jsail.fields.MFInt32Object');
> var SFMatrix3d =
> java.import('org.web3d.x3d.jsail.fields.SFMatrix3dObject');
> var MFMatrix3d =
> java.import('org.web3d.x3d.jsail.fields.MFMatrix3dObject');
> var SFMatrix3f =
> java.import('org.web3d.x3d.jsail.fields.SFMatrix3fObject');
> var MFMatrix3f =
> java.import('org.web3d.x3d.jsail.fields.MFMatrix3fObject');
> var SFMatrix4d =
> java.import('org.web3d.x3d.jsail.fields.SFMatrix4dObject');
> var MFMatrix4d =
> java.import('org.web3d.x3d.jsail.fields.MFMatrix4dObject');
> var SFMatrix4f =
> java.import('org.web3d.x3d.jsail.fields.SFMatrix4fObject');
> var MFMatrix4f =
> java.import('org.web3d.x3d.jsail.fields.MFMatrix4fObject');
> var SFString = java.import('org.web3d.x3d.jsail.fields.SFStringObject');
> var SFRotation =
> java.import('org.web3d.x3d.jsail.fields.SFRotationObject');
> var MFRotation =
> java.import('org.web3d.x3d.jsail.fields.MFRotationObject');
> var MFString = java.import('org.web3d.x3d.jsail.fields.MFStringObject');
> var SFTime = java.import('org.web3d.x3d.jsail.fields.SFTimeObject');
> var MFTime = java.import('org.web3d.x3d.jsail.fields.MFTimeObject');
> var SFVec2d = java.import('org.web3d.x3d.jsail.fields.SFVec2dObject');
> var MFVec2d = java.import('org.web3d.x3d.jsail.fields.MFVec2dObject');
> var SFVec2f = java.import('org.web3d.x3d.jsail.fields.SFVec2fObject');
> var MFVec2f = java.import('org.web3d.x3d.jsail.fields.MFVec2fObject');
> var SFVec3d = java.import('org.web3d.x3d.jsail.fields.SFVec3dObject');
> var MFVec3d = java.import('org.web3d.x3d.jsail.fields.MFVec3dObject');
> var SFVec3f = java.import('org.web3d.x3d.jsail.fields.SFVec3fObject');
> var MFVec3f = java.import('org.web3d.x3d.jsail.fields.MFVec3fObject');
> var SFVec4d = java.import('org.web3d.x3d.jsail.fields.SFVec4dObject');
> var MFVec4d = java.import('org.web3d.x3d.jsail.fields.MFVec4dObject');
> var SFVec4f = java.import('org.web3d.x3d.jsail.fields.SFVec4fObject');
> var MFVec4f = java.import('org.web3d.x3d.jsail.fields.MFVec4fObject');
>
> On Fri, Apr 10, 2020 at 10:03 PM John Carlson <yottzumm at gmail.com> wrote:
>
>> I discovered a way forward: https://github.com/joeferner/node-java#import Makes
>> a Java class work like a JavaScript class, in my reading.  I will proceed
>> to write a nodejs file which creates all the classes, if we are in
>> agreement that this is a nodejs-only solution and we want it. node-java is
>> the npm java I was talking about.  This will primarily make an X3DJSAIL
>> derivative, and will not be native JavaScript. I am not really into
>> generating a bunch of untested code at this point, and it seems like
>> X3DJSAIL is becoming a crown jewel again.  I do think that something like
>> PhantomJS is better for testing webapps rather than creating a nodejs app
>> to do it. I still test my webapps by hand unfortunately!
>>
>> However, I think we may have discussed this solution some time back, and
>> it may be worth reviewing the email.
>>
>> It does tie us to an external source code out of our control, but is that
>> any different netbeans?
>>
>> Will we run into the same problems as PyJNIus?
>>
>> It seems like we could create some test cases pretty quickly, that is,
>> use the same ones that cause PyJNIus to fail.
>>
>> I'm not sure when I'll get to this.
>>
>> Note that this will likely NOT be like the SAI reference implementation
>> for ECMAScript.
>> This will be a Java derivative that builds on previous work.
>>
>> I welcome people who want to help with the JSweet solution, but that
>> won't be SAI either.
>>
>> Perhaps we should have server-side SAI and client-side SAI?
>>
>> John
>>
>> On Fri, Apr 10, 2020 at 7:46 PM John Carlson <yottzumm at gmail.com> wrote:
>>
>>> So here's a description of my Java<->node.js bridge for RunSaxon.java.
>>>
>>> I have a file, runAndSend.js that imports another javascript file,
>>> allsaxon.js
>>>
>>> runAndSend.js has the following code:
>>> -----------------------------------------------------
>>> var runsaxon = require('./allsaxon');
>>> var config = require('./config');
>>> var fs = require("fs");
>>>
>>> function runAndSend(args, callback) {
>>>         runsaxon(args);
>>> ----------------------------------------------------
>>> allsaxon.js looks like this:
>>> ----------------------------------------------------
>>> var java = require("java");
>>> java.options.push("-Djava.awt.headless=true");
>>> java.options.push("-Xmx1000m");
>>>
>>> //java.options.push('-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005');
>>> java.classpath.push("saxon9he.jar");
>>> java.classpath.push("../saxon9he.jar");
>>> java.classpath.push("../../saxon9he.jar");
>>> java.classpath.push("../../../saxon9he.jar");
>>>
>>> java.classpath.push("target/classes");
>>> java.classpath.push("../target/classes");
>>> java.classpath.push("../../target/classes");
>>> java.classpath.push("../../../target/classes");
>>>
>>> java.classpath.push("target/X3DJSONLD-1.0-SNAPSHOT.jar");
>>> java.classpath.push("../target/X3DJSONLD-1.0-SNAPSHOT.jar");
>>> java.classpath.push("../../target/X3DJSONLD-1.0-SNAPSHOT.jar");
>>> java.classpath.push("../../../target/X3DJSONLD-1.0-SNAPSHOT.jar");
>>>
>>> function translate(infiles) {
>>>         java.callStaticMethodSync("net.coderextreme.RunSaxon", "main",
>>> infiles);
>>> }
>>>
>>> if (typeof module === 'object')  {
>>>         module.exports = translate;
>>> }
>>>
>>> ---------------------------------------------------------------------------------------------------------
>>> I have forgotten if there are class level interfaces to the underlying
>>> Java code, as we had in PyJNIus.   That would require research. We may run
>>> into the same issues as PyJNIus.
>>>
>>> In any cases, it would require mirroring the entire X3DJSAIL package, so
>>> it would be best if we probably wrote a stylesheet that put out this
>>> binding JavaScript code, whatever that may be.
>>>
>>> Here is the repository for npm (or node) java:
>>>
>>> https://github.com/joeferner/node-java
>>> <https://github.com/joeferner/node-java#javaNewInstance>
>>>
>>> It seems to me that we need some python or xslt code to read the X3DUOM
>>> and produce the glue code. Possibly only at the class level, but more
>>> likely at the method and instance level, not sure.  That requires more
>>> research.  I suggest someone take the Transform specification and convert
>>> it to the necessary glue code.  For me, I don't "need" this glue code as I
>>> am happy with Nashorn presently.  So it would probably be best to apply
>>> some $$ to make me need this glue code.  That is, I am pretty much happy
>>> with a Java/Nashorn server-side and JavaScript client-side solution.  I
>>> don't really need a JavaScript server-side solution.
>>>
>>> So who exactly needs a JavaScript server solution, and why aren't they
>>> speaking up?
>>>
>>> Thanks,
>>>
>>> John
>>>
>>>
>>> On Fri, Apr 10, 2020 at 7:24 PM John Carlson <yottzumm at gmail.com> wrote:
>>>
>>>>
>>>>
>>>> On Tue, Mar 24, 2020 at 8:20 AM Don Brutzman wrote:
>>>>
>>>> Authoring use-case environments are
>>>>> 1. Script inside X3D scene graph,
>>>>> 2. Script in outer HTML5 web page,
>>>>> 3. Standalone programmatic use in node.js
>>>>>
>>>>> Now get specific.
>>>>>
>>>>
>>>> Not yet.   We need to discuss the environments.   X_ITE does inside
>>>> X3D, and with the addition of X_ITE_DOM, in outer HTML5. X3DOM does
>>>> outer HTML5. X3DJSAIL is a standalone library.
>>>>
>>>> So what we really need is a standalone EAI for node.js without
>>>> rendering except to an encoding.  Can we turn either X3DJSAIL, X_ITE or
>>>> X3DOM into such an environment?  I provided a solution for Nashorn on top
>>>> of X3DJSAIL, but not a solution for node.js. Have we had any take up on the
>>>> Nashorn solution, enough to warrant a node.js solution?
>>>>
>>>> So I would recommend that before researching all the various
>>>> Transforms, that we just try to develop a single Transform.js class for
>>>> node.js, with an encoding rendering.  It will be throwaway code, just a
>>>> proof of concept.
>>>>
>>>> Suggestions for next steps are welcome, and I will review Don's email
>>>> again and see what he said.
>>>>
>>>> For node.js, I believe there are packages that emulate the browser
>>>> enviroment, i think that jsdom (?) and xmldom are two popular ones, so we
>>>> can look at turning node.js into a headless browser.   There are also ways
>>>> to run browsers in headless mode, PhantomJs comes to mind, but I haven't
>>>> researched this extensively.
>>>>
>>>> There are environments for running Java and node.js together, as I
>>>> demonstrated with RunSaxon.java in X3DJSONLD.  My approach for that was
>>>> simplistic, and won't really work for a multiclass approach.  There is also
>>>> the java npm package that may lead towards a solution.
>>>>
>>>> So a possible path forward is generating the glue code between node.js
>>>> and Java, similar to what we did for PyJNIus.
>>>>
>>>> I suggest that we do a very simple single class solution, not unlike
>>>> the RunSaxon.java solution. This required various node.js files.   I think
>>>> the new solution will be more complex to deal with the npm java
>>>> peculiarities.
>>>>
>>>> So this is throwaway code for now, just a single class.
>>>>
>>>> Note that I have been stripping RunSaxon code out of my code, since
>>>> I have a XML to JSON solution.
>>>>
>>>> What do you think?
>>>>
>>>> John
>>>>
>>>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20200410/20466f6b/attachment-0001.html>


More information about the x3d-public mailing list