SyntaxBoom

General Category => Showcase => Topic started by: Naughty Alien on Jun 11, 2025, 12:54 PM

Title: ..just discovered this gem..
Post 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()