THREE.BufferGeometry.computeBoundingSphere(): вычисляемый радиус равен NaN. Атрибут «позиция», скорее всего, будет иметь ⇐ Javascript
-
Гость
THREE.BufferGeometry.computeBoundingSphere(): вычисляемый радиус равен NaN. Атрибут «позиция», скорее всего, будет иметь
Когда я загружаю файлы obj и mtl с помощью Three.js, как показано в приведенном ниже коде, появляется следующая ошибка.
let Scene, Camera, Renderer, OrbitControls; функция initThreeJS() { сцена = новый THREE.Scene(); // 축 표시 const axes = новый THREE.AxesHelper(10); Scene.add(оси); камера = новый THREE.PerspectiveCamera(50, window.innerWidth / window.innerHeight, 0,1, 1000); camera.position.set(20, 20, 20); camera.lookAt(сцена.позиция); renderer = new THREE.WebGLRenderer({ antialias: true }); renderer.setClearColor(0xffffff, 1.0); renderer.setPixelRatio(window.devicePixelRatio); renderer.setSize(document.getElementById('myCanvas').clientWidth, document.getElementById('myCanvas').clientHeight); // 해상도 향상 renderer.toneMapping = THREE.ACESFilmicToneMapping; renderer.toneMappingExposure = 1,1; // 밝기 조절 document.getElementById('myCanvas').appendChild(renderer.domElement); орбитаконтролс = новый THREE.OrbitControls(камера, renderer.domElement); // 좌클릭 드래그 시, 아바타가 축을 기준으로만 회전하게 하려면 maxPolarAngle과 minPolarAngle의 값을 일치 {#orbitControls.maxPolarAngle = Math.PI * 0,5;#} OrbitControls.maxPolarAngle = Math.PI/2; OrbitControls.minPolarAngle = Math.PI/2; орбитаControls.minDistance = 0,1; орбитаконтролс.максдистанция = 100; {#orbitControls.autoRotate = true;#} OrbitControls.autoRotateSpeed = 1,0; addLight(0, 50, 0, 0,7); // 상단 빛 addLight(0, -50, 0, 0,7); // 하단 빛 addLight(-50, 0, 0, 0,7); // 왼쪽 빛 addLight(50, 0, 0, 0,7); // 오른쪽 빛 addLight(0, 0, 50, 1); // 전면 빛 addLight(0, 0, -50, 1,0); // 후면 빛 анимировать(); } функция addLight(x, y, z, интенсивность) { // интенсивность: 빛 밝기 정도 const Light = новый THREE.PointLight(0xffffff, интенсивность); Light.position.set(x, y, z); сцена.добавить(свет); } функция анимации() { requestAnimationFrame (анимация); орбитаконтроли.обновление(); renderer.render(сцена, камера); } функция loadObj (url) { const objUrl = "{% static 'test3-1-2/test3-1-2.obj' %}" const mtlUrl = "{% static 'test3-1-2/test3-1-2.mtl' %}" // MTL 파일 로드 const mtlLoader = новый THREE.MTLLoader(); mtlLoader.load(mtlUrl, (материалы) => { материалы.preload(); // 텍스처 필터링 설정 for (let MaterialName в Material.materials) { пусть материал = материалы.материалы[имя_материала]; // 해상도 향상 // тест 1-5 let newMaterial = новый THREE.MeshPhysicalMaterial({ карта: материал.карта, цвет: материал.цвет, прозрачный: true, // 구두 굽 사이의 공간을 빈 공간으로 // 단점: 구두 근처가 흐릿하게 렌더링 непрозрачность: 0,9 }); материалы.материалы[имя_материала] = новыйМатериал; // 재질 교체 } // OBJ 파일 로드 const objLoader = новый THREE.OBJLoader(); objLoader.setMaterials(материалы); objLoader.load(objUrl, (объект) => { object.scale.set(0,01, 0,01, 0,01); сцена.добавить(объект); }, не определено, (ошибка) => { console.log('Ошибка загрузки OBJ:', error.message, error.stack) }) }, не определено, (ошибка) => { console.log('Ошибка загрузки MTL: ', error.message, error.stack) }) } window.addEventListener('DOMContentLoaded', initThreeJS); THREE.BufferGeometry.computeBoundingSphere(): вычисляемый радиус равен NaN. Атрибут «позиция», скорее всего, будет иметь значения NaN.
Если вы откроете и проверите файл obj с помощью 3D-программы, вы увидите проблему с файлом obj. Что мне делать?
Пожалуйста, помогите!
Когда я загружаю файлы obj и mtl с помощью Three.js, как показано в приведенном ниже коде, появляется следующая ошибка.
let Scene, Camera, Renderer, OrbitControls; функция initThreeJS() { сцена = новый THREE.Scene(); // 축 표시 const axes = новый THREE.AxesHelper(10); Scene.add(оси); камера = новый THREE.PerspectiveCamera(50, window.innerWidth / window.innerHeight, 0,1, 1000); camera.position.set(20, 20, 20); camera.lookAt(сцена.позиция); renderer = new THREE.WebGLRenderer({ antialias: true }); renderer.setClearColor(0xffffff, 1.0); renderer.setPixelRatio(window.devicePixelRatio); renderer.setSize(document.getElementById('myCanvas').clientWidth, document.getElementById('myCanvas').clientHeight); // 해상도 향상 renderer.toneMapping = THREE.ACESFilmicToneMapping; renderer.toneMappingExposure = 1,1; // 밝기 조절 document.getElementById('myCanvas').appendChild(renderer.domElement); орбитаконтролс = новый THREE.OrbitControls(камера, renderer.domElement); // 좌클릭 드래그 시, 아바타가 축을 기준으로만 회전하게 하려면 maxPolarAngle과 minPolarAngle의 값을 일치 {#orbitControls.maxPolarAngle = Math.PI * 0,5;#} OrbitControls.maxPolarAngle = Math.PI/2; OrbitControls.minPolarAngle = Math.PI/2; орбитаControls.minDistance = 0,1; орбитаконтролс.максдистанция = 100; {#orbitControls.autoRotate = true;#} OrbitControls.autoRotateSpeed = 1,0; addLight(0, 50, 0, 0,7); // 상단 빛 addLight(0, -50, 0, 0,7); // 하단 빛 addLight(-50, 0, 0, 0,7); // 왼쪽 빛 addLight(50, 0, 0, 0,7); // 오른쪽 빛 addLight(0, 0, 50, 1); // 전면 빛 addLight(0, 0, -50, 1,0); // 후면 빛 анимировать(); } функция addLight(x, y, z, интенсивность) { // интенсивность: 빛 밝기 정도 const Light = новый THREE.PointLight(0xffffff, интенсивность); Light.position.set(x, y, z); сцена.добавить(свет); } функция анимации() { requestAnimationFrame (анимация); орбитаконтроли.обновление(); renderer.render(сцена, камера); } функция loadObj (url) { const objUrl = "{% static 'test3-1-2/test3-1-2.obj' %}" const mtlUrl = "{% static 'test3-1-2/test3-1-2.mtl' %}" // MTL 파일 로드 const mtlLoader = новый THREE.MTLLoader(); mtlLoader.load(mtlUrl, (материалы) => { материалы.preload(); // 텍스처 필터링 설정 for (let MaterialName в Material.materials) { пусть материал = материалы.материалы[имя_материала]; // 해상도 향상 // тест 1-5 let newMaterial = новый THREE.MeshPhysicalMaterial({ карта: материал.карта, цвет: материал.цвет, прозрачный: true, // 구두 굽 사이의 공간을 빈 공간으로 // 단점: 구두 근처가 흐릿하게 렌더링 непрозрачность: 0,9 }); материалы.материалы[имя_материала] = новыйМатериал; // 재질 교체 } // OBJ 파일 로드 const objLoader = новый THREE.OBJLoader(); objLoader.setMaterials(материалы); objLoader.load(objUrl, (объект) => { object.scale.set(0,01, 0,01, 0,01); сцена.добавить(объект); }, не определено, (ошибка) => { console.log('Ошибка загрузки OBJ:', error.message, error.stack) }) }, не определено, (ошибка) => { console.log('Ошибка загрузки MTL: ', error.message, error.stack) }) } window.addEventListener('DOMContentLoaded', initThreeJS); THREE.BufferGeometry.computeBoundingSphere(): вычисляемый радиус равен NaN. Атрибут «позиция», скорее всего, будет иметь значения NaN.
Если вы откроете и проверите файл obj с помощью 3D-программы, вы увидите проблему с файлом obj. Что мне делать?
Пожалуйста, помогите!
Мобильная версия