MasatoMakino/threejs-texture-switching-loader

View on GitHub
demoSrc/common.js

Summary

Maintainability
A
0 mins
Test Coverage
"use strict";
import {
  AmbientLight,
  AxesHelper,
  Color,
  PerspectiveCamera,
  Scene,
  WebGLRenderer,
} from "three";
import { OrbitControls } from "three/examples/jsm/controls/OrbitControls.js";

export function initScene() {
  const scene = new Scene();
  return scene;
}

export function initLight(scene) {
  const ambientLight = new AmbientLight(0xffffff, 1.0);
  scene.add(ambientLight);
  return ambientLight;
}

export function initCamera(scene, W, H) {
  const camera = new PerspectiveCamera(45, W / H, 1, 400);
  camera.position.set(0, 0, 100);
  camera.updateMatrixWorld(false);
  scene.add(camera);
  return camera;
}

export function initControl(camera, render) {
  const control = new OrbitControls(camera, render.domElement);
  control.update();
  return control;
}

export function initRenderer(W, H) {
  const renderOption = {
    canvas: document.getElementById("webgl-canvas"),
    antialias: true,
  };
  const renderer = new WebGLRenderer(renderOption);
  renderer.setClearColor(new Color(0x000000));
  renderer.setSize(W, H);
  renderer.setPixelRatio(window.devicePixelRatio);
  return renderer;
}

export function initHelper(scene) {
  const axesHelper = new AxesHelper(30);
  scene.add(axesHelper);
}

export function render(control, renderer, scene, camera) {
  const rendering = () => {
    control.update();
    renderer.render(scene, camera);
    requestAnimationFrame(rendering);
  };
  rendering();
}