SyntaxBoom
General Category => Showcase => Topic started by: Naughty Alien on Jun 11, 2025, 12:54 PM
..i came across this nice and tidy python 3D engine called URSINA (https://www.ursinaengine.org/), and i have to say, i love it..syntax is exceptionally friendly and easy to use..its backbone is Panda3D and everything is well organized and easy to use/access..highly recommended..here are some screenshots and code that produced it..
(https://i.postimg.cc/YqDWhw16/screenshot.png)
(https://i.postimg.cc/T1YK3k1N/screenshot1.png)
import render
from ursina import *
from ursina.prefabs.first_person_controller import FirstPersonController
from ursina.shaders import lit_with_shadows_shader, unlit_shader
from ursina.shaders import basic_lighting_shader
from pathlib import Path
from panda3d.core import Fog # Import Panda3D's Fog class
from panda3d.core import loadPrcFileData
from direct.filter.CommonFilters import CommonFilters
# Set custom folder
application.asset_folder = Path('D:/URSINAProject/3D_MODELS')
app = Ursina()
window.color=color.rgb(135, 206, 250) # Sky color
window.fullscreen = True # Automatically use full screen
window.title = "My Fullscreen Ursina App"
window.borderless = True
window.debug = False
window.exit_button.visible = False
window.fps_counter.enabled = False
window.entity_counter.enabled = False
window.collider_counter.enabled = False
train = Entity(model='british_rail_class_08.glb',scale=100,position=(0, 0, 0),shader=lit_with_shadows_shader)
ground = Entity(model='plane',scale=(1500, 1, 1500),color=color.dark_gray,collider='box',shader=lit_with_shadows_shader)
def input(key):
if key == 'escape':application.quit()
sun=DirectionalLight(shadows=True, rotation=(45, -45, 0))
sun.shadow_map_resolution = (8192, 8192)
camera_controller = EditorCamera()
camera_controller.move_speed=50
camera_controller.position = (0, 30, -100)
camera_controller.rotation_x = 10 # Optional: tilt downward
# Apply bloom filter after the app is created
filters = CommonFilters(application.base.win, application.base.cam)
filters.setBloom(
blend=(1, 0.0, 0.0, 0.0),
desat=-0.5,
intensity=2.0,
size='medium'
)
filters.set_msaa(4)
filters.set_cartoon_ink()
def input(key):
if key == 'f9':
invoke(lambda: application.base.win.saveScreenshot('screenshot1.png'), delay=0)
app.run()