PyEngine3D icon indicating copy to clipboard operation
PyEngine3D copied to clipboard

PyEngine3D is open source opengl 3d engine project wirtten in python.

PyEngine3D

Welcome to PyEngine3D

  • An open source Python 3D engine using the pyopengl API that uses pygame and pyglet as the game backend.
  • Homepage : https://pyengine3d.blogspot.com
  • Documents : https://pyengine3d.readthedocs.io

Requirements

  • OpenGL 4.3 ( Shading language 430 )
  • numpy
  • pillow
  • pyglet or pygame
  • PyOpenGL
  • PyOpenGL-accelerate ( optional )
  • Windows, Linux, Mac(not tested)

How to install PyEngine3D

  git clone https://github.com/ubuntunux/PyEngine3D
  cd PyEngine3D
  pip install -r requirements.txt
  python main.py
  • Video : https://www.youtube.com/watch?v=bVwdV695_zo

Trouble Shooting

Crash issue using anaconda

  • https://python-pillow/Pillow#2945
  • https://conda-forge/pillow-feedstock#45
Traceback (most recent call last):
  File "main.py", line 44, in <module>
    from PyEngine3D.Common import CustomQueue, CustomPipe
  File "C:\Users\quint\OneDrive\Documents\Git BASH FOLDER\PyEngine3D\PyEngine3D\Common\__init__.py", line 3, in <module>
    from PyEngine3D.Utilities import Logger
  File "C:\Users\quint\OneDrive\Documents\Git BASH FOLDER\PyEngine3D\PyEngine3D\Utilities\__init__.py", line 4, in <module>
    from .ImageProcessing import *
  File "C:\Users\quint\OneDrive\Documents\Git BASH FOLDER\PyEngine3D\PyEngine3D\Utilities\ImageProcessing.py", line 6, in <module>
    from PIL import Image
  File "C:\Users\quint\Anaconda3\lib\site-packages\PIL\Image.py", line 90, in <module>
    from . import _imaging as core
ImportError: DLL load failed
Solution1)
conda install -c anaconda pillow

Solution2)
conda install --channel conda-forge pillow=5

Solution3)
conda remove pillow
pip install pillow

Features

  • Features : https://www.youtube.com/watch?v=Lpuxi2O5fiA

  • pybullet example : https://github.com/ubuntunux/PyBullet3D

  • Import

    • Mesh
      • [x] .obj, .dae ( colada )
      • [ ] .fbx
      • [ ] gltf, blender
    • Texture
      • [x] .png, .tga, .bmp etc
      • [ ] Compressed Texture (ETC, DDS)
  • Light

    • [x] Directional light & Shadow mapping
    • [ ] Spot light
    • [ ] Area light
    • [x] Point light
      • [ ] shadow map using dual paraboloid mapping
  • Particle System

    • [x] CPU Based Particle
    • [x] GPU Based Particle GPU Based Particle
    • [x] Vector Field
    • [ ] Particle spawn on polygon surface
    • [ ] Bitonic Sorting
    • [ ] Memory Pool
    • [ ] Attractor
    • [ ] Noise
    • [ ] Curl Noise
  • Object

    • [ ] Select, Move, Modify
    • [ ] Gizmo
    • [x] Skeleton Mesh
    • [x] Static Mesh
    • [ ] Tree, Foliage, Grass
    • [x] Terrain Terrain
    • [x] Atmoshpere & Sky Atmoshpere0 Atmoshpere1 Atmoshpere2 Atmoshpere3 Atmoshpere4
    • [ ] Road
    • [ ] Wind
    • [x] FFT Ocean FFT Ocean0 FFT Ocean1
    • [ ] River
  • Rendering

    • [ ] Culling
      • [ ] occlusion culling
      • [ ] distance culling
      • [x] view frustum culling
    • [ ] VTF Skinning
    • [ ] Calculate the animation in gpu
    • [ ] Distance Field Font
    • [x] Real time light probe
    • [x] PBR PBR
    • [x] Temporal AA
    • [x] SSAA
    • [x] MSAA
    • [ ] Temporal Upsacle
    • [x] Screen Space Relfection Screen Space Relfection
    • [x] Screen Space Ambient Occlusion
    • [ ] Screen Space Bevel
    • [ ] Screen Space SSS
    • [x] Depth Of Field
      • [ ] Bokeh
    • [x] Bloom Bloom
    • [x] Tone mapping
    • [ ] Glare
    • [ ] Film Grain
    • [ ] Color Correction
    • [ ] Color Grading
    • [x] Light Shaft Light Shaft
    • [x] Motion Blur
      • [ ] Recursive Velocity
    • [ ] Parallax Occlusion Rendering
    • [ ] Paraboloid environment map
    • [ ] Voxel Based GI
    • [ ] Volumtric Scattering
    • [ ] Fur Rendering
  • Resource Manager

    • [x] Load / Save / Import / Export
    • [ ] Unload / Reload system
    • [ ] Duplicate resource
    • [ ] Sound Manager
    • [x] Script Manager
  • Blender3D plugin

    • [ ] transfer geometry, animation, scene datas
    • [ ] edit animation, scene, sequence, particles in blender
  • InGame GUI

    • [ ] input / output
    • [ ] progress bar
    • [ ] button
  • Optimize

    • [ ] Only dynamic shadows are updated on every frame, and static shadows are not updated every time.
    • [ ] SSR ray reuse in compute shader
    • [ ] Postprocessing in compute shader
    • [ ] FFT in compute shader
    • [ ] Precomputed atmosphere in compute shader

References

  • https://wickedengine.net/2017/11/07/gpu-based-particle-simulation
  • http://kode80.com/blog/2015/03/11/screen-space-reflections-in-unity-5/index.html
  • http://proland.inrialpes.fr/publications.html
  • http://casual-effects.com/data/index.html
  • https://github.com/TheRealMJP/MSAAFilter
  • http://pyopengl.sourceforge.net/
  • https://learnopengl.com/
  • http://www.songho.ca/index.html