Skip to content

Transform


WebGPU is not supported in your browser
Please upgrade to latest Chrome/Edge

ts
import { Stats } from '@orillusion/stats'
import { Engine3D, Scene3D, AtmosphericComponent, CameraUtil, HoverCameraController, Object3D, MeshRenderer, BoxGeometry, LitMaterial, DirectLight, KelvinUtil, View3D } from '@orillusion/core'
import dat from 'dat.gui'

// simple base demo
class Sample_Transform {
    async run() {
        // init engine
        await Engine3D.init()
        // create new Scene
        let scene = new Scene3D()

        // add performance stats
        scene.addComponent(Stats)

        // add an Atmospheric sky enviroment
        let sky = scene.addComponent(AtmosphericComponent)
        sky.sunY = 0.6

        // init camera3D
        let mainCamera = CameraUtil.createCamera3D(null, scene)
        mainCamera.perspective(60, Engine3D.aspect, 1, 2000.0)

        // add a basic camera controller
        let hoverCameraController = mainCamera.object3D.addComponent(HoverCameraController)
        hoverCameraController.setCamera(15, -15, 10)

        // create a basic cube
        let cubeObj = new Object3D()
        let mr = cubeObj.addComponent(MeshRenderer)
        mr.geometry = new BoxGeometry()
        let mat = new LitMaterial()
        mr.material = mat
        scene.addChild(cubeObj)

        // add a basic direct light
        let lightObj = new Object3D()
        lightObj.rotationX = 45
        lightObj.rotationY = 60
        lightObj.rotationZ = 150
        let dirLight = lightObj.addComponent(DirectLight)
        dirLight.lightColor = KelvinUtil.color_temperature_to_rgb(5355)
        dirLight.intensity = 10
        scene.addChild(lightObj)

        sky.relativeTransform = dirLight.transform

        // create a view with target scene and camera
        let view = new View3D()
        view.scene = scene
        view.camera = mainCamera

        // start render
        Engine3D.startRenderView(view)

        let transform = cubeObj.transform
        // debug GUI
        let gui = new dat.GUI()
        let Trans = gui.addFolder('Transform')
        Trans.add(transform, 'x', -100.0, 100.0, 0.01)
        Trans.add(transform, 'y', -100.0, 100.0, 0.01)
        Trans.add(transform, 'z', -100.0, 100.0, 0.01)
        Trans.add(transform, 'rotationX', 0.0, 360.0, 0.01)
        Trans.add(transform, 'rotationY', 0.0, 360.0, 0.01)
        Trans.add(transform, 'rotationZ', 0.0, 360.0, 0.01)
        Trans.add(transform, 'scaleX', 0.0, 2.0, 0.01)
        Trans.add(transform, 'scaleY', 0.0, 2.0, 0.01)
        Trans.add(transform, 'scaleZ', 0.0, 2.0, 0.01)
        Trans.open()
    }
}

new Sample_Transform().run()