Mixing 2D and 3D

August Lammersdorf, InteractiveMesh sdn at interactivemesh.com
Sun Jul 21 06:08:10 PDT 2013


 I. JavaFX 3D goals

 Whatever the use case will be JavaFX 3D will be measured against the 
 business needs and certainly against the capabilities of the latest 
 releases of the native 3D APIs Direct3D (11.1) and OpenGL (4.3). This 
 might be unfair or not helpful, but it is legitimate because they are 
 the upper limits.

 So, even an object-oriented scene-graph-based 3D implementation should 
 in principle be able to benefit from almost all native 3D features and 
 should provide access to them. If the JavaFX architecture enables this 
 approach then a currently minor implementation state will be rather 
 accepted.
 
 Potential features are currently determined and limited by JavaFX' 
 underlying native APIs Direct3D 9 and OpenGL ES 2. Correct?

 Are there any perspectives available about future features?

  - core, e.g.: primitives (points, lines, line-strip, triangle-strip, 
 patches, corresponding adjacency types), vertex attributes, 
 double-precision, shaders (vertex, tessalation, geometry, fragment, 
 compute), 3D-/cubemap-texture, multitextures, compressed texture, 
 texture properties, multipass rendering, occlusion queries, stencil 
 test, offscreen rendering into image, multiple active cameras, stereo?

  - APIs, e.g.: user input for scene navigation and model interaction 
 (keyboard, mouse, touchpad/screen), geometry utilies, skinning, physics 
 engine interface (kinematics), shadows

 Will JavaOne 2013 highlight the JavaFX 3D strategy extensively?

 Another source: Exploring JavaFX 3D, Jim Weaver
 https://oraclein.activeevents.com/connect/fileDownload/session/4D7869532A53BCAC5A18FB5687C1103C/CON1140_Weaver-exploring-javafx-3d.pdf

 II. Mixing 2D and 3D
 
  - "to tease apart the scene graph into Node, Node3D, and NodeBase ... 
 doesn't work"
  - "we keep the integrated scene graph as we have it",

 So, all current and future 3D leaf and branch nodes are/will be derived 
 from Node, which is primarily designed for use in a 2D/2.5D scene graph.

 Alea iacta est!

 Various Node's properties and methods seem not to be relevant or 
 applicable for 3D nodes (e.g. Shape3D). Are you going to communicate 
 which of these several hundreds (see below) should be used preferably, 
 have a different semantic, should not be used or aren't supported for 3D 
 nodes?

  - "So the idea is that we can have different pipelines optimized for 
 2D or 3D rendering"
 
 Would be great!

  - Scene - Scene2D/SubScene2D - Scene3D/SubScene3D
  - "if you put a 2D rectangle in a Scene3D/SubScene3D"

 What is the use case for rendering 2D pixel-coordinates-based shapes 
 (or even controls) within a 3D scene consisting of meshes constructed on 
 3D coordinates of arbitrary unit?

 Couldn't the pipelines be even better optimized if neither 2D nodes are 
 rendered in SubScene3D nor 3D nodes are rendered in SubScene2D?
 
 August
 
 ------

 javafx.scene.shape.Shape3D

 Properties inherited from class javafx.scene.Node

 blendMode, boundsInLocal, boundsInParent, cacheHint, cache, clip, 
 cursor, depthTest, disabled, disable, effectiveNodeOrientation, effect, 
 eventDispatcher, focused, focusTraversable, hover, id, 
 inputMethodRequests, layoutBounds, layoutX, layoutY, 
 localToParentTransform, localToSceneTransform, managed, 
 mouseTransparent, nodeOrientation, onContextMenuRequested, 
 onDragDetected, onDragDone, onDragDropped, onDragEntered, onDragExited, 
 onDragOver, onInputMethodTextChanged, onKeyPressed, onKeyReleased, 
 onKeyTyped, onMouseClicked, onMouseDragEntered, onMouseDragExited, 
 onMouseDragged, onMouseDragOver, onMouseDragReleased, onMouseEntered, 
 onMouseExited, onMouseMoved, onMousePressed, onMouseReleased, onRotate, 
 onRotationFinished, onRotationStarted, onScrollFinished, onScroll, 
 onScrollStarted, onSwipeDown, onSwipeLeft, onSwipeRight, onSwipeUp, 
 onTouchMoved, onTouchPressed, onTouchReleased, onTouchStationary, 
 onZoomFinished, onZoom, onZoomStarted, opacity, parent, pickOnBounds, 
 pressed, rotate, rotationAxis, scaleX, scaleY, scaleZ, scene, style, 
 translateX, translateY, translateZ, visible

 Methods inherited from class javafx.scene.Node

 addEventFilter, addEventHandler, autosize, blendModeProperty, 
 boundsInLocalProperty, boundsInParentProperty, buildEventDispatchChain, 
 cacheHintProperty, cacheProperty, clipProperty, computeAreaInScreen, 
 contains, contains, cursorProperty, depthTestProperty, disabledProperty, 
 disableProperty, effectiveNodeOrientationProperty, effectProperty, 
 eventDispatcherProperty, fireEvent, focusedProperty, 
 focusTraversableProperty, getBaselineOffset, getBlendMode, 
 getBoundsInLocal, getBoundsInParent, getCacheHint, getClassCssMetaData, 
 getClip, getContentBias, getCssMetaData, getCursor, getDepthTest, 
 getEffect, getEffectiveNodeOrientation, getEventDispatcher, getId, 
 getInputMethodRequests, getLayoutBounds, getLayoutX, getLayoutY, 
 getLocalToParentTransform, getLocalToSceneTransform, getNodeOrientation, 
 getOnContextMenuRequested, getOnDragDetected, getOnDragDone, 
 getOnDragDropped, getOnDragEntered, getOnDragExited, getOnDragOver, 
 getOnInputMethodTextChanged, getOnKeyPressed, getOnKeyReleased, 
 getOnKeyTyped, getOnMouseClicked, getOnMouseDragEntered, 
 getOnMouseDragExited, getOnMouseDragged, getOnMouseDragOver, 
 getOnMouseDragReleased, getOnMouseEntered, getOnMouseExited, 
 getOnMouseMoved, getOnMousePressed, getOnMouseReleased, getOnRotate, 
 getOnRotationFinished, getOnRotationStarted, getOnScroll, 
 getOnScrollFinished, getOnScrollStarted, getOnSwipeDown, getOnSwipeLeft, 
 getOnSwipeRight, getOnSwipeUp, getOnTouchMoved, getOnTouchPressed, 
 getOnTouchReleased, getOnTouchStationary, getOnZoom, getOnZoomFinished, 
 getOnZoomStarted, getOpacity, getParent, getProperties, 
 getPseudoClassStates, getRotate, getRotationAxis, getScaleX, getScaleY, 
 getScaleZ, getScene, getStyle, getStyleableParent, getStyleClass, 
 getTransforms, getTranslateX, getTranslateY, getTranslateZ, 
 getTypeSelector, getUserData, hasProperties, hoverProperty, idProperty, 
 inputMethodRequestsProperty, intersects, intersects, isCache, isDisable, 
 isDisabled, isFocused, isFocusTraversable, isHover, isManaged, 
 isMouseTransparent, isPickOnBounds, isPressed, isResizable, isVisible, 
 layoutBoundsProperty, layoutXProperty, layoutYProperty, localToParent, 
 localToParent, localToParent, localToParent, localToParent, 
 localToParentTransformProperty, localToScene, localToScene, 
 localToScene, localToScene, localToScene, localToSceneTransformProperty, 
 localToScreen, localToScreen, localToScreen, localToScreen, 
 localToScreen, lookup, lookupAll, managedProperty, maxHeight, maxWidth, 
 minHeight, minWidth, mouseTransparentProperty, nodeOrientationProperty, 
 onContextMenuRequestedProperty, onDragDetectedProperty, 
 onDragDoneProperty, onDragDroppedProperty, onDragEnteredProperty, 
 onDragExitedProperty, onDragOverProperty, 
 onInputMethodTextChangedProperty, onKeyPressedProperty, 
 onKeyReleasedProperty, onKeyTypedProperty, onMouseClickedProperty, 
 onMouseDragEnteredProperty, onMouseDragExitedProperty, 
 onMouseDraggedProperty, onMouseDragOverProperty, 
 onMouseDragReleasedProperty, onMouseEnteredProperty, 
 onMouseExitedProperty, onMouseMovedProperty, onMousePressedProperty, 
 onMouseReleasedProperty, onRotateProperty, onRotationFinishedProperty, 
 onRotationStartedProperty, onScrollFinishedProperty, onScrollProperty, 
 onScrollStartedProperty, onSwipeDownProperty, onSwipeLeftProperty, 
 onSwipeRightProperty, onSwipeUpProperty, onTouchMovedProperty, 
 onTouchPressedProperty, onTouchReleasedProperty, 
 onTouchStationaryProperty, onZoomFinishedProperty, onZoomProperty, 
 onZoomStartedProperty, opacityProperty, parentProperty, parentToLocal, 
 parentToLocal, parentToLocal, parentToLocal, parentToLocal, 
 pickOnBoundsProperty, prefHeight, prefWidth, pressedProperty, 
 pseudoClassStateChanged, relocate, removeEventFilter, 
 removeEventHandler, requestFocus, resize, resizeRelocate, 
 rotateProperty, rotationAxisProperty, scaleXProperty, scaleYProperty, 
 scaleZProperty, sceneProperty, sceneToLocal, sceneToLocal, sceneToLocal, 
 sceneToLocal, sceneToLocal, screenToLocal, screenToLocal, screenToLocal, 
 setBlendMode, setCache, setCacheHint, setClip, setCursor, setDepthTest, 
 setDisable, setDisabled, setEffect, setEventDispatcher, setEventHandler, 
 setFocused, setFocusTraversable, setHover, setId, 
 setInputMethodRequests, setLayoutX, setLayoutY, setManaged, 
 setMouseTransparent, setNodeOrientation, setOnContextMenuRequested, 
 setOnDragDetected, setOnDragDone, setOnDragDropped, setOnDragEntered, 
 setOnDragExited, setOnDragOver, setOnInputMethodTextChanged, 
 setOnKeyPressed, setOnKeyReleased, setOnKeyTyped, setOnMouseClicked, 
 setOnMouseDragEntered, setOnMouseDragExited, setOnMouseDragged, 
 setOnMouseDragOver, setOnMouseDragReleased, setOnMouseEntered, 
 setOnMouseExited, setOnMouseMoved, setOnMousePressed, 
 setOnMouseReleased, setOnRotate, setOnRotationFinished, 
 setOnRotationStarted, setOnScroll, setOnScrollFinished, 
 setOnScrollStarted, setOnSwipeDown, setOnSwipeLeft, setOnSwipeRight, 
 setOnSwipeUp, setOnTouchMoved, setOnTouchPressed, setOnTouchReleased, 
 setOnTouchStationary, setOnZoom, setOnZoomFinished, setOnZoomStarted, 
 setOpacity, setPickOnBounds, setPressed, setRotate, setRotationAxis, 
 setScaleX, setScaleY, setScaleZ, setStyle, setTranslateX, setTranslateY, 
 setTranslateZ, setUserData, setVisible, snapshot, snapshot, 
 startDragAndDrop, startFullDrag, styleProperty, toBack, toFront, 
 toString, translateXProperty, translateYProperty, translateZProperty, 
 usesMirroring, visibleProperty



More information about the openjfx-dev mailing list