Transform
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();