#javascript
Вопрос:
Не могли бы вы, пожалуйста, сказать мне, как я могу оптимизировать свой код из ТРЕХ JS? У меня производительность около 60 в LightHouse. Я хочу асинхронно загрузить все 3 модели только в одну сцену и добавить ее в 3 элемента div. Я предполагаю, что это может оптимизировать загрузку и веб-страницу, но, может быть, есть другие способы оптимизировать этот код?
ПОЛНЫЙ КОД: https://jsfiddle.net/nzj2xv3s/
import * as THREE from 'https://cdnjs.cloudflare.com/ajax/libs/three.js/r128/three.module.js';
// import {FBXLoader} from 'https://cdn.jsdelivr.net/npm/three@0.118.1/examples/jsm/loaders/FBXLoader.js';
// import { OrbitControls } from "https://threejs.org/examples/jsm/controls/OrbitControls.js";
import { GLTFLoader } from 'https://threejs.org/examples/jsm/loaders/GLTFLoader.js';
const container = document.querySelector("#canvas");
const container2 = document.querySelector(".number2");
const container3 = document.querySelector(".number3");
const addObject = (container, modelpath, lightIntensity) => {
const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera( 75, container.offsetWidth / container.offsetHeight, 0.1, 1000 );
const renderer = new THREE.WebGLRenderer({ antialias: true, alpha: true });
const light = new THREE.AmbientLight();
light.intensity = lightIntensity
renderer.setPixelRatio( container.devicePixelRatio );
renderer.setSize( container.offsetWidth, container.offsetHeight );
container.appendChild( renderer.domElement );
// const controls = new OrbitControls( camera, renderer.domElement );
scene.add( light );
const loader = new GLTFLoader();
loader.load(modelpath, function( gltf ) {
const model = gltf.scene;
model.material = new THREE.MeshLambertMaterial({
color: 0xff0000,
side: THREE.DoubleSide
});
scene.add(model);
camera.position.z = 5
function animate() {
requestAnimationFrame( animate );
// controls.update();
// model.rotation.x = 0.01;
model.rotation.y = 0.001;
renderer.render( scene, camera );
}
animate()
});
}
addObject(container, '3dmodel/scene.gltf', 3);
addObject(container2, 'meat/scene.gltf', 3);
addObject(container3, 'tushenka/scene.gltf', 4);