Skip to content

effiemincer/Java-3D-Scene-Rendering

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

146 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Java 3D Scene Rendering Engine

A physics-based 3D rendering engine implemented in Java using ray tracing, custom scene descriptions, and multithreaded optimization.


🧠 Project Overview

This engine parses structured scene files to construct a 3D environment and renders realistic images using recursive ray tracing. It supports:

  • Reflection
  • Lighting and shadows
  • Basic material models
  • Object composition via XML-like scene files

Rendering is parallelized using Java’s multithreading features to improve performance on modern hardware.


πŸ› οΈ Tech Stack

  • Language: Java 17
  • Core Concepts: Ray tracing, recursive reflection, camera projection
  • Optimization: Thread pools and pixel-based work partitioning
  • Input format: Custom .xml-like scene description

πŸš€ Features

  • βœ… Scene file parser to define camera, geometries, lights, and materials
  • βœ… Ray-object intersection system
  • βœ… Recursive ray tracing with reflective surfaces
  • βœ… Point and directional lighting with soft shadows
  • βœ… Multithreaded rendering pipeline
  • βœ… Exports output as .png image

🧱 Project Structure

Java-3D-Scene-Rendering/
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ geometries/      # Spheres, planes, triangles, etc.
β”‚   β”œβ”€β”€ lighting/        # Light sources
β”‚   β”œβ”€β”€ renderer/        # Core rendering loop
β”‚   β”œβ”€β”€ scene/           # Scene construction and parsing
β”‚   └── main/            # Application entry point
β”œβ”€β”€ scenes/              # Sample scene description files
β”œβ”€β”€ output/              # Rendered image output
└── README.md

πŸ“š Background

This project was built as part of a university course in computer graphics and Java systems programming.

Key learning outcomes:

  • Understanding 3D space, vector math, and lighting models

  • Recursive algorithms for ray tracing

  • Scene serialization and deserialization

  • Parallelization in Java


πŸ§‘β€πŸ’» Authors

Effie Mincer Computer Science @ JCT | effiemincer.dev

Yehuda Gurovich Computer Science @ JCT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages