Mixing 2D and 3D

Herve Girod herve.girod at gmail.com
Sun Jul 21 07:07:53 PDT 2013

"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?"

In my field of work (avionics displays),we might have a lot of use cases
for that. However, you also have that in video games, where they like to
render 2D interactive panels in a 3D perspective in the game world.


2013/7/21 August Lammersdorf, InteractiveMesh <sdn at interactivemesh.com>

> 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/**
> 4D7869532A53BCAC5A18FB5687C110**3C/CON1140_Weaver-exploring-**
> javafx-3d.pdf<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, effectiveNodeOrientationProper**ty, 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, onInputMethodTextChangedProper**ty,
> 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