Model 2D or 3D graphics with different projections, edit with geometric transformations, import or export as a simple CSV.
Java
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.settings
bin
res
src
.classpath
.project
HighWire3D.jar
README.md
highwire.png
highwirelogo.png
houseframe.csv
houserotation.gif
lines.csv
squares.csv

README.md

Model 3D wireframe scenes with different projections, edit objects with dynamic controls and specific matrix transformations, and import or export as a simple CSV.

Overview | Features | Hotkeys | Setup | Structure | Credits

Overview

What started as my curiosity with computer graphics solidified into ideas that built this 3D graphics editor. It's built on top of Java's graphics package - no preexisting 3D Java APIs went into creating the scene - using an original backend transformation class, custom line class and GUI. It is capable of translation, scale, and rotation of wire objects along the x, y, and z axis in a 3 dimensional space. Transformations are concatenated using matrix functions and applied to lines stored in a 3D space as separate matrices. All matrices are handled in the Jama Matrix package for instantiating a matrix data structure and computing simple low-level matrix math (such as multiplication and inversion) within the graphic transformations. All GUI Components are Java Swing.

Features

Import new wires from a CSV file or other basic text format.

Export all wires in the scene to a CSV file saved in their current transformation.

Perspective Project the wire scene, giving a customizable depth to objects further away (along z axis)

Parallel Project the wire scene, giving infinite focal length and essentially 'flattening' the z-axis. Useful for blueprints and aligning wires.

Copy all selected wires and objects, spawning the duplication translated 50x and 50y as one new unified.

Undo the last complete addition to the scene, from a single wire to a fresh concatenated import.

Select Wires individually, across different objects. This will turn wires from white to red and unaffected by subsequent transformations to the scene.

Select Objects as a whole to be editable or not. Imported scenes count as entire objects.

Select All wires in the scene to be editable or not.

Screenshot The current state of the scene and save as a jpg or png.

Hotkeys

  • Ctrl O: Import/Open
  • Ctrl S: Export/Save
  • Ctrl A: Select/Deselect all wires
  • Ctrl C: Copy all selected wires as a new object
  • Ctrl Z: Undo last object addition
  • Ctrl N: Parallel projection
  • CtrlM: Perspective projection
  • Ctrl D: Set perspective depth value
  • Ctrl LMB: Drag to translate objects along z-axis
  • Ctrl RMB: Drag to rotate objects along z-axis
  • LMB: Drag to translate objects on X-Y plane
  • RMB: Drag to rotate objects on X-Y plane
  • MMB: Scroll to increase/decrease scale on all axis

Setup

To run: Download the executable JAR file of the packaged HighWire3D.

HighWire3D was built in Ecipse Mars IDE and has project files supplied. Simply download HighWire3D as a zip and import as existing project into your Eclipse workspace to best view and edit the source code.

Credits

JAMA: A Java Matrix Package gives the matrix constructor from a double array and the basic matrix multiplication method needed to compute more complicated transformation matrices.

Icons8 provided the menu bar icons, and hosts tens of thousands more for free use.