mirror of
https://github.com/xibyte/jsketcher
synced 2025-12-06 16:33:15 +01:00
74 lines
1.8 KiB
JavaScript
74 lines
1.8 KiB
JavaScript
import {AmbientLight, PerspectiveCamera, Scene, SpotLight, WebGLRenderer} from 'three';
|
|
import DPR from '../dpr';
|
|
import {MeshArrow} from './objects/auxiliary';
|
|
import * as SceneGraph from './sceneGraph';
|
|
import {AXIS} from '../math/l3space';
|
|
|
|
export default function(container) {
|
|
|
|
function createBasisArrow(axis, color) {
|
|
return new MeshArrow({
|
|
dir: axis,
|
|
color,
|
|
length: 1,
|
|
headLength: 0.3,
|
|
headWidth: 0.15,
|
|
lineWidth: 0.02
|
|
});
|
|
}
|
|
|
|
let xAxis = createBasisArrow(AXIS.X, 0xFF0000);
|
|
let yAxis = createBasisArrow(AXIS.Y, 0x00FF00);
|
|
let zAxis = createBasisArrow(AXIS.Z, 0x0000FF);
|
|
|
|
let root = SceneGraph.createGroup();
|
|
let csys = SceneGraph.createGroup();
|
|
|
|
let scene = new Scene();
|
|
csys.add(xAxis);
|
|
csys.add(yAxis);
|
|
csys.add(zAxis);
|
|
|
|
root.add(csys);
|
|
scene.add(root);
|
|
|
|
let ambientLight = new AmbientLight(0x0f0f0f);
|
|
scene.add(ambientLight);
|
|
|
|
let spotLight = new SpotLight(0xffffff);
|
|
spotLight.position.set(0, 0, 5);
|
|
spotLight.castShadow = true;
|
|
scene.add(spotLight);
|
|
|
|
let camera = new PerspectiveCamera( 25, 1, 0.1, 2000 );
|
|
camera.position.x = 0;
|
|
camera.position.y = 0;
|
|
camera.position.z = 5;
|
|
|
|
let renderer = new WebGLRenderer({ alpha: true });
|
|
renderer.setPixelRatio(DPR);
|
|
// renderer.setClearColor(0x000000, 1);
|
|
// renderer.setClearAlpha(0);
|
|
renderer.setSize( container.clientWidth, container.clientHeight );
|
|
container.appendChild( renderer.domElement );
|
|
|
|
function renderScene() {
|
|
renderer.render(scene, camera);
|
|
}
|
|
|
|
function render(cameraToSync) {
|
|
root.quaternion.setFromRotationMatrix( cameraToSync.matrixWorldInverse );
|
|
renderScene();
|
|
}
|
|
|
|
function dispose() {
|
|
xAxis.dispose();
|
|
yAxis.dispose();
|
|
zAxis.dispose();
|
|
renderer.dispose();
|
|
}
|
|
|
|
return {
|
|
render, dispose
|
|
}
|
|
}
|