Вытягивание геометрии в three.js

В настоящее время я загружаю объект STL в свою сцену three.js.

По какой-то причине для рендеринга/анимации требуется много ресурсов графического процессора, что замедляет всю сцену, поэтому я рассматривал альтернативы.

Так как это довольно простая фигура, я подумал, что мог бы создать 2D-форму и выдавить ее.

Трехмерная форма представляет собой квадратную рамку (это фоторамка), никаких кривых или какой-либо другой сложной геометрии.

Первоначально я думал создать 4x 3D-профиля, повернув каждый на 90 градусов и поместив их прямо в сцену, чтобы она выглядела как рамка, но это не идеально.

Вытягивание геометрии в three.js

Вытягивание геометрии в three.js

Итак, в качестве альтернативы загрузке модели STL в сцену, как я могу создать эту форму в three.js (с пустым местом в центре), а затем выдавить ее, чтобы придать ей некоторую глубину?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
3
1 930
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Базовый пример экструзии: Shape -> ExtrudeGeometry -> Mesh

const { renderer, scene, camera } = initThree();


//Create a frame shape..
var frame = new THREE.Shape();
frame.moveTo(-4, -3);
frame.lineTo( 4, -3);
frame.lineTo( 4,  3);
frame.lineTo(-4,  3);

//..with a hole:
var hole = new THREE.Path();
hole.moveTo(-3, -2);
hole.lineTo( 3, -2);
hole.lineTo( 3,  2);
hole.lineTo(-3,  2);
frame.holes.push(hole);

//Extrude the shape into a geometry, and create a mesh from it:
var extrudeSettings = {
    steps: 1,
    depth: 1,
    bevelEnabled: false,
};
var geom = new THREE.ExtrudeGeometry(frame, extrudeSettings);
var mesh = new THREE.Mesh(geom, new THREE.MeshPhongMaterial({ color: 0xffaaaa }));


scene.add(mesh);
renderer.render(scene, camera);
body {
    margin: 0;
    overflow: hidden;
}
canvas {
    display: block;
}
<script src = "//cdnjs.cloudflare.com/ajax/libs/three.js/102/three.min.js"></script>
<script src = "//cdn.rawgit.com/Sphinxxxx/298702f070e34a5df30326cd9943260a/raw/16afc701da1ed8ed267a896907692d8acdce9b7d/init-three.js"></script>

Другие вопросы по теме