All Projects → Rad-hi → 3D-Rendering-Desktop-App

Rad-hi / 3D-Rendering-Desktop-App

Licence: other
3D rendering engine made using Python as an exploratory adventure into the world of 3D graphics.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to 3D-Rendering-Desktop-App

element
Fast and simple custom elements.
Stars: ✭ 65 (+140.74%)
Mutual labels:  3d-graphics
RenderingX12
Partially open source: real-time scene rendering using XUSG based on DirectX 12. 纯粹秀秀demo……ただ、デモを見せるため……
Stars: ✭ 16 (-40.74%)
Mutual labels:  3d-graphics
limitless-engine
OpenGL C++ Graphics Engine
Stars: ✭ 95 (+251.85%)
Mutual labels:  3d-graphics
SourceRenderer
A tiny 3D engine that loads and renders Source engine maps - Also known as dreieck.exe
Stars: ✭ 32 (+18.52%)
Mutual labels:  3d-graphics
elm-playground-3d
A simple way to create three-dimensional pictures, animations, and games.
Stars: ✭ 25 (-7.41%)
Mutual labels:  3d-graphics
StickMan-3D
StickMan 3D: First Round | indie fighting game | C++ OpenGL
Stars: ✭ 60 (+122.22%)
Mutual labels:  3d-graphics
WalkTheWeb
WalkTheWeb 3D Internet - Metaverse - Multiverse - Host your own multiplayer Metaverse of 3D Games, 3D Shopping, and 3D Scenes!
Stars: ✭ 28 (+3.7%)
Mutual labels:  3d-graphics
Minecraft
A Tiny Minecraft clone made with C++ and OpenGL.
Stars: ✭ 88 (+225.93%)
Mutual labels:  3d-graphics
PolyDraw
✳️ PTSource PolyDraw is a free 3D polygonal modeller for Windows x86 and x64, for creating or modifying 3D objects using a mesh of 3D points and parametric NURBS Curves .Exports and imports to over 40 formats including WebVR and 3D Printing.
Stars: ✭ 17 (-37.04%)
Mutual labels:  3d-graphics
SmallFBX
An open-source implementation of Autodesk's FBX
Stars: ✭ 41 (+51.85%)
Mutual labels:  3d-graphics
MetalGlobe
Simple demo project with Metal on Swift
Stars: ✭ 18 (-33.33%)
Mutual labels:  3d-graphics
Legion-Engine
Rythe is a data-oriented C++17 game engine built to make optimal use of modern hardware.
Stars: ✭ 502 (+1759.26%)
Mutual labels:  3d-graphics
rend3
Easy to use, customizable, efficient 3D renderer library built on wgpu.
Stars: ✭ 546 (+1922.22%)
Mutual labels:  3d-graphics
html3dutil
A public domain JavaScript library to ease developing HTML 3D apps
Stars: ✭ 29 (+7.41%)
Mutual labels:  3d-graphics
rabbit-hole
An experimental voxel engine.
Stars: ✭ 39 (+44.44%)
Mutual labels:  3d-graphics
3D interactive graphics rendering engine
Develop a 3D interactive graphics rendering engine
Stars: ✭ 31 (+14.81%)
Mutual labels:  3d-graphics
nautilus
another graphics engine
Stars: ✭ 16 (-40.74%)
Mutual labels:  3d-graphics
3DCSGNet
CSGNet for voxel based input
Stars: ✭ 34 (+25.93%)
Mutual labels:  3d-graphics
NS-illustration-pack
Package of 3D low poly illustrations created in a Blender
Stars: ✭ 28 (+3.7%)
Mutual labels:  3d-graphics
COLLADAViewer2
An OBSOLETE instructional OS X application to load/display COLLADA Models and export to compact binary representations.
Stars: ✭ 48 (+77.78%)
Mutual labels:  3d-graphics

Build a 3D rendering desktop app from scratch with Python

V1 Demo YouTube video

V2 Code walkthrough YouTube video


New version !

This folder was changed as there was only 3 source files, now there exists V1_SOURCE and V2_SOURCE where the V1 contains the original files (not recommended to use), and the V2 contains the new version of the project that adapts an OOP approach and a cleaner code structure, as well as some enhancements along with some new features.

What's new?

  • OOP approach
  • The 3D model is only redrawn (rerendered) when there's a change
  • Faces are now being drawn completely (no matter how many vetrecies)
  • Points that aren't in the screen are no longer rendered
  • Rotation isn't continous, instead it's a custom degree on each axis
  • New controls for Line color, Filling color, canvas color
  • Filling could be turned ON and OFF

Description

This project was made as a practice for Python programming, Matrix manipulation, file processing, and general system engineering processes.

Also it was a way for me to explore an interesting field for me which is graphics (2D, and 3D).

It's a desktop app that takes in waveform files (.OBJ) and visualizes its triangulated form (no filliing, no shading, no texturing! just triangles)

The V2 (Legacy_versions/V2_SOURCE) of the project adds a filling option with control over the color of the filling as well as whether it's turned ON or OFF.

Key Words

  • Python: Numpy, Tkinter, re (regex), 3D graphics.

  • Waveform files (.OBJ).


Disclamer

This article assumes having basic knowledge of Python, Tkinter, and Numpy, since these will not be covered here.

About waveform files (.OBJ), I recommend reading this article in Wikipedia.

Or if you're not into reading, watch this YouTube video


How to use

Dependecies:

New contribution: Our friend @http-samc added requirements.txt to the project and made it easier to install all dependencies (this is the preferred way to do this) through running this command pip3 install -r requirements.txt.


You'll have to have these libraries along with Python in your PC pip3 install -r requirements.txt :

  • Numpy

  • Tkinter (if you're running Linux, you'll have to install it sudo apt-get install python3-tk , otherwise, it comes with Python when installed)

  • The 3 files provided in this repo located in the same folder.

  • pyscreenshot (Only if you're running Linux, otherwise, you can use ImageGrab from the PIL lib)

Manipulation

  • Run the main.py file

  • This interface will open:

  • You can load any .obj file you want, or you can choose from the files provided in the /Objects folder.

  • After loading the 3D model, you can move it UP/DOWN/LEFT/RIGHT using the U/D/L/R buttons or using the arrow keys on your keyboard.

  • You can zoom in and out, or rotate the model in 3 axis.

  • You can take screenshots too with the "Take screenshot" button.

New in V2

  • You can turn ON and OFF the filling.

  • You can change the canvas color, the lines color, and the filling color.


References


Author info

Linkedin

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].