A (Work-In-Progress) CAD-inspired 3D Geometry Editor written in Java from scratch using only the Java Standard Library and Swing's 2D drawing capabilities.
all with no existing, external 3D library used. all code to project and transform and others are handcrafted. See Vector3
J3Engine is a standalone desktop app.
(This project comes in 2 versions, this version the actual hobby project development and then the PAT version with the features being enar identical with only a few minor differences)
Man just run the .jar or .msi man with like Java 21 and you good.
- Complex 3D scene with multiple geometry types
- Prisms, cone, curves, triangles
- Camera orbit command
- 3D rendering and spatial layering
- Command palette
- Live command suggestions
- Typed argument hints
Vector3/Color/UUID(reoslve to referenced object) support
- Ghost/preview geometry
- Interactive prism creation
- Keyboard controlled radius/side count
- Properties panel
- Layers panel
- Wireframe view mode
- Rectangle based selection
- Multi-object selection
- Layers panel
- Properties panel with generic/multiple types
- In-app documentation. See
- Other engine themes.
- Geometry Tools toolbox submenu
- Custom theme support
- Command palette suggestions and autocomplete (Right click)
- 2d drafting via
Grid2dPanel - Creating points and lines in 2D and projecting then into 3D
- Mouse-position feedback
transform rotatecommand- interactive rotate handles
- Rotation axis visualization
- Object transformation preview
- Properties panel output
- Object-type filtering
- Generic properties
- Selection of dependent geometry (line, with it's points)
(See Aliases to see how command and subcommand aliases work)
(All links below link to the source code of the command/tool)
transform <subcommand>- Transform a selection of objectstransform translate [p|f|t]: Translate tooltransform rotate [p|f|t] <vector3?>: Rotate tooltransform scale [p|v|t]: Scale tooltransform qtrans: Quick-Translate tool
camera <subcommand>- Camera commandscamera orbit: Orbit tool (Change the camera yaw/pitch or orbit around world centre)
clipboard <subcommand>- Clipboard related commands (keybinded to CTRL+C and CTRL+V)clipboard copy: Copies the current selection to the J3Engine clipbaordclipboard paste: Pastes whatever is in the J3Engine clipboard
extrude <triangle?>: Extrude a given triangle into a solid (or a selection if no triangle input is given)prism <vector3> <vector3> <vector3?> <vector3?> <vector3?> <vector3?>: Creates a prismjoin <subcommand?>: Joins a selection of points or otherwise into new geometry- Depending on what's selected, the command may call the appropriate subcommand o your behalf.
join line <point> <point> <point?>: Joins 2 points into a line or 3 points into a curve.
measure <subcommand?>: Measures the given geometry- Similar selection based handling semantics as join
measure line <vector3> <vector3>: Measure the distance between 2 positionsmeasure area <vector3> <Vector3> <vector3>: Measure the area between 3 positions as a trianglemeasure volume <thing>: Measure the volume of a given Thing.
explode <any>: Explodes all geometry into constituent points, decimating all relationships and not storing in history.debug <subcommand>: Commands for debugging mostly random engine internals. Such as echoing within the command palette or other stuffui <subcommand>: UI related commands.ui toggle [history|grid2d|properties|...]: Toggle the visibility of floating panel ui.
create [point|tri|prism|...]: Create new geometry on the flyengine <subcommand>: Engine related subcommandsengine exit <boolean>: Run the engine shutdown sequenceengine files: Open the location of J3Engine user files where things such as custom themes, preferences, log files, projects frame relating things are.
select <any>: Selects the given geometry.help <any>: Provides help on the given command.








