Three.js - Примеры
From three.js
Примеры
Здесь даются примеры реализации различных подсобных объектов и функций.
|
Контролы (элементы управления)
OrbitControls - элемент управления, позволяющий камере вращаться вокруг цели. Геометрические элементы
ConvexBufferGeometry - буферный вариант ConvexGeometry
ConvexGeometry - создание выпуклой оболочки по заданному массиву трехмерных точек
DecalGeometry - создание сетки (mesh) с декалью Загрузчики
BabylonLoader - загрузка в формате babylon
GLTFLoader - загрузка в формате glTF 2.0
MTLLoader - загрузка в формате mtl
OBJLoader - загрузка в формате obj
OBJLoader2 - загрузка в формате obj
LoaderSupport - вспомогательные классы для загрузчиков файлов
PCDLoader - загрузка ресурсов в формате pcd
PDBLoader - загрузка в формате pdb
SVGLoader - загрузка в формате svg
TGALoader - загрузка в формате tga
PRWMLoader - загрузка в формате prwm
MMDLoader - загрузка в формате mmd Экспортеры
GLTFExporter - экспорт ресурсов в формате glTF 2.0 |
Плагины
LookupTable - таблица поиска для карт цвета
SpriteCanvasMaterial - материал для спрайтов на двумерном canvas QuickHull
Face - секция, ограниченная определенным числом полуребер
HalfEdge - основа для полурёберной структуры данных
QuickHull - алгоритм построения выпуклой оболочки на плоскости
VertexNode - вершина в качестве узла двусвязного списка
VertexList - двусвязный список вершин Визуализаторы (рендереры)
CanvasRenderer - визуализация с помощью Canvas2D Context API
CSS2DRenderer - упрощенная версия CSS3DRenderer
CSS3DRenderer - иерархические 3D-преобразования элементов DOM (свойство transform CSS3)
SVGRenderer - визуализация геометрических элементов в формате svg Подсобные функции (утилиты)
BufferGeometryUtils - вспомогательные функции для экземпляров BufferGeometry
SceneUtils - полезные функции для работы со сценой Анимации
CCDIKSolver - решатель для инверсной кинематики с алгоритмом CCD
MMDAnimationHelper - вспомогательный элемент для анимации с ресурсами в формате MMD
MMDPhysics - обработка физических свойств для ресурсов MMD |
Контролы
OrbitControls
Орбитальный контрол (элемент управления) позволяет камере вращаться вокруг цели.Для его использования, как и всех файлов в директории /examples, нужно будет отдельно включить этот файл в HTML-код.
Пример
var renderer = new THREE.WebGLRenderer(); renderer.setSize( window.innerWidth, window.innerHeight ); document.body.appendChild( renderer.domElement );
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera( 45, window.innerWidth / window.innerHeight, 1, 10000 );
var controls = new THREE.OrbitControls( camera );
// controls.update() must be called after any manual changes to the camera's transform // после любых ручных изменений состояния камеры должен быть вызван controls.update() camera.position.set( 0, 20, 100 ); controls.update();
function animate() {
requestAnimationFrame( animate );
// required if controls.enableDamping or controls.autoRotate are set to true // если controls.enableDamping или controls.autoRotate установлен как true, необходимо controls.update();
renderer.render( scene, camera );
}
Другие примеры:
misc / controls / orbit
Конструктор
OrbitControls(
object - объект')" onmouseout="hide()">object, domElement )
object - объект')" onmouseout="hide()">object - камера, которой нужно управлять (обязательный аргумент).
domElement - элемент HTML, используемый для прослушивателей (приемников) событий (дополнительный, необязательный аргумент).
По умолчанию это весь документ целиком, однако, если нужно чтобы элементы управления (контролы) работали от какого-либо определенного элемента (например, <canvas> - холст), укажите его в этом аргументе.
Статья о DOM в Википедии.
Статья о DOM в Википедии.
Свойства
.autoRotate
Для автоматического вращения вокруг цели установите значение данного свойства как true.Обратите внимание, если это свойство включено, в цикле анимации нужно вызывать метод update.
.autoRotateSpeed
Свойство определяет скорость вращения камеры вокруг цели, если свойство autoRotate установлено как true.
Значение по умолчанию равно 2.0, что равно 30 секундам на один оборот при 60 кадрах в секунду.Обратите внимание, если свойство autoRotate включено, в цикле анимации нужно вызывать метод update.
.dampingFactor
Затухающая инерция используется, если для параметра enableDamping установлено как true.Обратите внимание, для работы этого свойства в цикле анимации нужно вызывать метод update.
.domElement
DOM элемент HTML, используется для прослушивания (приема) событий от мышки / касаний. Он должен быть передан в конструкторе; его изменение здесь не создаст новых приемников событий.Значением по умолчанию является весь документ.
Статья о DOM в Википедии.
.enabled
Свойство определяет, будет или нет включено управление..enableDamping
Установите значение этого свойства как true для включения затухания (инерции), которое может быть использовано чтобы придать ощущение веса элементам управления. Значением по умолчанию является false.Обратите внимание, если данное свойство включено (т.е. true), в каждом цикле анимации требуется вызывать update( ).
(в смысле - отслеживать нажатия
клавиш клавиатуры)')" onmouseout="hide()">.enableKeys
Включает или отключает использование управления от клавиатуры..enablePan
Включает или отключает панорамирование камерой. Значением по умолчанию является true..enableRotate
Включает или отключает горизонтальный и вертикальный поворот камеры. Значением по умолчанию является true.Обратите внимание, что можно отключать одну ось установкой минимального и максимального значения полярного или азимутального углов на одно и тоже значение, что приведет к тому, что вертикальное или горизонтальное вращение будет зафиксировано в этом значении.
.enableZoom
Включает или отключает масштабирование (наезд - отъезд) камеры..keyPanSpeed
Свойство определяет скорость панорамирования камеры при использовании клавиатуры для её управления. Значение по умолчанию равно 7.0 пикселов на одно нажатие клавиши..keys
Этот объект содержит ссылки на коды клавиш, используемых для управления панорамированием камеры.
controls.keys = {
LEFT: 37, // left arrow (стрелка влево)
UP: 38, // up arrow (стрелка вверх)
RIGHT: 39, // right arrow (стрелка вправо)
BOTTOM: 40 // down arrow (стрелка вниз)
}
Вот полный список кодов нажатий клавиш клавиатуры..maxAzimuthAngle
Свойство определяет, насколько велика может быть орбита по горизонтали, верхний предел. Возможный диапазон от - Math.PI до Math.PI (или Infinity для снятия ограничений). Значением по умолчанию является Infinity..maxDistance
Свойство определяет, насколько далеко может отъехать камера (только для камеры с перспективной проекцией).
Значением по умолчанию является Infinity (бесконечность)..maxPolarAngle
Свойство определяет, насколько велика может быть орбита по вертикали, верхний предел. Возможный диапазон от 0 до Math.PI, в радианах.
Значением по умолчанию является Math.PI..maxZoom
How far you can zoom out (только для камеры с ортографической проекцией).
Значением по умолчанию является Infinity (бесконечность)..minAzimuthAngle
How far you can orbit horizontally, lower limit. Range is - Math.PI to Math.PI ( or - Infinity for no limit ) and default is - Infinity;.minDistance
How far you can dolly in (только для камеры с перспективной проекцией). Значение по умолчанию равно 0..minPolarAngle
How far you can orbit vertically, lower limit. Range is 0 to Math.PI radians.
Значение по умолчанию равно 0..minZoom
How far you can zoom in (только для камеры с ортографической проекцией). Значение по умолчанию равно 0..mouseButtons
Этот объект содержит ссылки на кнопки мышки, используемые для управления камерой.
controls.mouseButtons = {
ORBIT: THREE.MOUSE.LEFT,
ZOOM: THREE.MOUSE.MIDDLE,
PAN: THREE.MOUSE.RIGHT
}Камера, которой управляет контрол.
object - объект')" onmouseout="hide()">.object
.panningMode
Режим панорамирования. Определяет, как изменяется позиция камеры при панорамировании.
Возможными вариантами является THREE.ScreenSpacePanning, при котором камера панорамирует в экранном пространстве,
и THREE.HorizontalPanning, при котором камера панорамирует в плоскости, ортогональной (перпендикулярной) направлению вверх камеры.
Значением по умолчанию является THREE.ScreenSpacePanning..panSpeed
Скорость панорамирования. Значение по умолчанию равно 1.Данное свойство используется внутри контрола методами saveState и resetreset.
position 0 - позиция 0')" onmouseout="hide()">.position0
.rotateSpeed
Скорость поворота. Значение по умолчанию равно 1.Данное свойство используется внутри контрола методами saveState и resetreset.
target 0 - цель 0')" onmouseout="hide()">.target0
Точка фокуса элемента управления, вокруг которой вращается камера. Для смены фокуса элемента управления её можно в любой момент обновить вручную.
target - цель')" onmouseout="hide()">.target
.zoom0
Данное свойство используется внутри контрола методами saveState
и resetreset..zoomSpeed
Скорость масштабирования / наезда - отъезда камеры. Значение по умолчанию равно 1.Методы
.dispose( )
Метод удаляет все прослушиватели (приемники) событий..getAzimuthalAngle( )
Получает текущий угол поворота по горизонтали, в радианах..getPolarAngle( )
Получает текущий угол поворота по вертикали, в радианах..reset( )
Метод сбрасывает состояние элемента управления либо в его состояние, сохраненное последним вызовом saveState, либо в исходное состояние..saveState( )
Сохраняет текущее состояние элемента управления. Впоследствии оно может быть восстановлено с помощью метода reset..update( )
Метод обновляет элемент управления. Должен вызываться после любых изменений состояния камеры вручную или в цикле обновления,
если установлены autoRotate
или enableDamping.Исходники
Геометрические элементы
BufferGeometry →
ConvexBufferGeometry
ConvexBufferGeometry можно использовать для создания выпуклой оболочки по заданному массиву трехмерных точек. Среднее время сложности этой задачи считается как O(nlog(n)).Пример
var geometry = new THREE.ConvexBufferGeometry( points );
var material = new THREE.MeshBasicMaterial( {color: 0x00ff00} );
var mesh = new THREE.Mesh( geometry, material );
scene.add( mesh );
Другие примеры:
geometry / convex
Конструктор
ConvexBufferGeometry( points )
points
— массив трехмерных векторов, который будет содержать получающаяся выпуклая оболочка.
Исходники
Geometry →
ConvexGeometry
ConvexGeometry можно использовать для создания выпуклой оболочки по заданному массиву трехмерных точек. Среднее время сложности этой задачи считается как O(nlog(n)).Пример
var geometry = new THREE.ConvexGeometry( points );
var material = new THREE.MeshBasicMaterial( {color: 0x00ff00} );
var mesh = new THREE.Mesh( geometry, material );
scene.add( mesh );Другие примеры:
geometry / convex
Конструктор
ConvexGeometry( points )
points
— массив трехмерных векторов, который будет содержать получающаяся выпуклая оболочка.
Исходники
BufferGeometry →
DecalGeometry
DecalGeometry можно использовать для создания сетки (mesh) с декалью, которая служит различным видам целей, например добавление уникальных элементов к моделям, выполнение динамически видимых изменений окружающей среды или облицовка стыков. performing dynamic visual environmental changes or covering seams.Пример
var geometry = new THREE.DecalGeometry( mesh, position, orientation, size );
var material = new THREE.MeshBasicMaterial( { color: 0x00ff00 } );
var mesh = new THREE.Mesh( geometry, material );
scene.add( mesh );
Другие примеры:
decals
Конструктор
DecalGeometry(
mesh - сетка')" onmouseout="hide()">mesh,
position - позиция')" onmouseout="hide()">position,
orientation - ориентация, направление')" onmouseout="hide()">orientation,
size - размер')" onmouseout="hide()">size )
mesh — любой объект сетка (mesh).
position — позиция Position of the decal projector.
orientation — ориентация Orientation of the decal projector.
size — размер Size of the decal projector.
Исходники
Загрузчики
BabylonLoader
Загрузчик для загрузки ресурсов в формате babylon.Файловый формат babylon используется JavaScript'овским фреймворком Babylon.js.
Пример
// instantiate a loader (создаем экземпляр загрузчика) var loader = new THREE.BabylonLoader();
// load a Babylon resource (загружаем Babylon ресурс) loader.load( // resource URL (URL-адрес ресурса) 'models/babylon/skull.babylon', // Function when resource is loaded (функция при загрузке ресурса) function ( object ) { scene.add( object ); }, // Function called when download progresses // функция, вызываемая в процессе загрузки function ( xhr ) { console.log( (xhr.loaded / xhr.total * 100) + '% loaded' ); }, // Function called when download errors // функция, вызываемая при ошибках загрузки function ( xhr ) { console.log( 'An error happened' ); } );
Другие примеры:
webgl_loader_babylon
Конструктор
BabylonLoader(
manager - менеджер, управляющий')" onmouseout="hide()">manager )
manager - менеджер, управляющий')" onmouseout="hide()">manager — менеджер загрузки, используемый для загрузки. Значением по умолчанию является THREE.DefaultLoadingManager.
Свойства
Методы
.load(
- единообразный локатор (определитель
местонахождения) ресурса.')" onmouseout="hide()">url, onLoad, onProgress, onError )
- единообразный локатор (определитель
местонахождения) ресурса.')" onmouseout="hide()">url — строка, содержащая путь/URL-адрес babylon-файла (обязательный аргумент).
onLoad — функция, которая будет вызвана после успешного завершения загрузки, дополнительный, необязательный параметр. В качестве аргумента, эта функция получает загруженный Object3D.
onProgress
- функция, которая будет вызываться пока идет процесс загрузки.
Аргументом будет экземпляр XMLHttpRequest, что содержит сведения о загрузке total
и
размер загруженного ресурса')" onmouseout="hide()">loaded в байтах.
размер загруженного ресурса')" onmouseout="hide()">loaded в байтах.
onError — функция, которая будет вызвана в случае ошибки при загрузке, дополнительный, необязательный параметр. Функция принимает ошибку в качестве аргумента.
Начинает загрузку с URL-адреса и после её успешного завершения вызывает функцию, указанную в onLoad, с разобранным содержимым ответа.
parse - разбор, структурный анализ')" onmouseout="hide()">.parse(
текстовый формат описания объекта, основанный на JavaScript')" onmouseout="hide()">json )
текстовый формат описания объекта, основанный на JavaScript')" onmouseout="hide()">json — анализируемая JSON-структура.
Найденные объекты конвертируются в Mesh c BufferGeometry и по умолчанию с MeshPhongMaterial.
Освещение обрабатывается соответственно.
Исходники
Loader →
GLTFLoader
Загрузчик для загрузки ресурсов в формате glTF 2.0.Формат glTF (GL Transmission Format) это спецификация открытого формата для эффективной передачи и загрузки 3D content. Ресурсы могут быть предоставлены либо в формате JSON (с расширением .gltf), либо в бинарном формате (.glb). Текстуры (.jpg, .png, ...) и дополнительные бинарные данные (.bin) хранятся во внешних файлах. Ресурс glTF может представить одну или несколько сцен, включая сетки (mesh), материалы, текстуры, оболочки (skin), "скелеты", цели морфинга, анимации, освещение и/или камеры.
Расширения
GLTFLoader поддерживает следующие расширения glTF:KHR_draco_mesh_compression
KHR_materials_pbrSpecularGlossiness
KHR_materials_unlit
KHR_lights (экспериментально)
KHR_materials_pbrSpecularGlossiness
KHR_materials_unlit
KHR_lights (экспериментально)
Пример
... показать
// Instantiate a loader (создание экземпляра загрузчика) var loader = new THREE.GLTFLoader();
// Optional: Provide a DRACOLoader instance to decode compressed mesh data // опционально: предоставление экземпляра DRACOLoader для декодирования сжатых данных сетки THREE.DRACOLoader.setDecoderPath( '/examples/js/libs/draco' ); loader.setDRACOLoader( new THREE.DRACOLoader() );
// Load a glTF resource (загрузка ресурсов в формате glTF) loader.load( // resource URL (URL-адрес ресурса) 'models/gltf/duck/duck.gltf', // called when the resource is loaded (вызывается по завершении загрузки) function ( gltf ) {
scene.add( gltf.scene );
gltf.animations; // Array (массив) <THREE.AnimationClip> gltf.scene; // THREE.Scene gltf.scenes; // Array (массив) <THREE.Scene> gltf.cameras; // Array (массив) <THREE.Camera> gltf.asset; // Object (объект)
}, // called when loading is in progresses (вызывается во время загрузки) function ( xhr ) {
console.log( ( xhr.loaded / xhr.total * 100 ) + '% loaded' );
}, // called when loading has errors (вызывается при ошибках в загрузке) function ( error ) {
console.log( 'An error happened' ); } );
Другие примеры:
webgl / loader / gltf
Совместимость с браузером
GLTFLoader полагается на обещания (Promise) от ES6, которые не поддерживаются в IE11. Для использования загрузчика в IE11, нужно подключить полифилл предоставляющий подмену Promise (обещания).Вот описание Promise на javascript.ru.
Конструктор
GLTFLoader(
manager - менеджер, управляющий')" onmouseout="hide()">manager )
manager - менеджер, управляющий')" onmouseout="hide()">manager — менеджер загрузки, используемый для загрузки. Значением по умолчанию является THREE.DefaultLoadingManager.
Свойства
Методы
.load(
- единообразный локатор (определитель
местонахождения) ресурса.')" onmouseout="hide()">url, onLoad, onProgress, onError )
url — строка, содержащая путь/URL-адрес .gltf или .glb файла.
onLoad — функция, которая будет вызвана после успешного завершения загрузки. В качестве аргумента, эта функция получает загруженный ответ в формате JSON, возвращенный функцией parse.
onProgress — функция, которая будет вызываться пока идет процесс загрузки, дополнительный, необязательный параметр.
Аргументом будет экземпляр XMLHttpRequest, что содержит сведения о загрузке total
и
размер загруженного ресурса')" onmouseout="hide()">loaded в байтах.
размер загруженного ресурса')" onmouseout="hide()">loaded в байтах.
onError — функция, которая будет вызвана в случае ошибки при загрузке, дополнительный, необязательный параметр. Функция принимает ошибку в качестве аргумента.
Начинает загрузку с URL-адреса и после её успешного завершения вызывает функцию обратного вызова с разобранным содержимым ответа..setPath( path )
path — базовый путь для загрузки дополнительных ресурсов, например текстур или двоичных данных (.bin).
Устанавливает базовый путь для дополнительных ресурсов..setCrossOrigin( value )
value — строковое значение crossOrigin для реализации
- совместное использование ресурсов между разными
источниками — технология современных браузеров, которая
позволяет предоставить веб-странице доступ к ресурсам
другого домена')" onmouseout="hide()">CORS для загрузки url-адреса с другого домена, который предоставляет CORS.
- совместное использование ресурсов между разными
источниками — технология современных браузеров, которая
позволяет предоставить веб-странице доступ к ресурсам
другого домена')" onmouseout="hide()">CORS для загрузки url-адреса с другого домена, который предоставляет CORS.
.setDRACOLoader( dracoLoader : DRACOLoader )
dracoLoader — экземпляр THREE.DRACOLoader, который будет использоваться для декодирования компонентов, сжатых с расширением KHR_draco_mesh_compression.
Подробности о Draco и его декодере смотрите здесь..parse( data, path, onLoad, onError )
data — glTF компонент для синтаксического анализа, в виде буфера массива (
с фиксированной длиной. Нельзя манипулировать содержимым
ArrayBuffer напрямую. Вместо этого, необходимо создать
типизованное представление DataView, которое будет отображать
буфер в определенном формате, и даст доступ на запись и
чтение его содержимого.')" onmouseout="hide()">ArrayBuffer) или строки в формате JSON.
с фиксированной длиной. Нельзя манипулировать содержимым
ArrayBuffer напрямую. Вместо этого, необходимо создать
типизованное представление DataView, которое будет отображать
буфер в определенном формате, и даст доступ на запись и
чтение его содержимого.')" onmouseout="hide()">ArrayBuffer) или строки в формате JSON.
path — базовый путь, по которому находятся последующие glTF-ресурсы, такие как текстуры и файлы двоичных данных (.bin).
onLoad — функция, которая будет вызвана по завершению синтаксического анализа.
onError — функция, которая будет вызвана в случае ошибки во время синтаксического анализа (парсинга), дополнительный, необязательный параметр. Функция принимает ошибку в качестве аргумента.
Parse a glTF-based ArrayBuffer or JSON String and fire onLoad callback when complete. The argument to onLoad will be an object that contains loaded parts: .scene, .scenes, .cameras, and .animations.Исходники
MTLLoader
Загрузчик для загрузки ресурсов в формате .mtl, который используется загрузчиками OBJLoader и UTF8Loader. Формат MTL (Material Template Library, т.е. библиотека шаблонов материала) или файловый формат .MTL - это формат, сопутствующий файлам формата .OBJ, который описывает свойства поверхности затенения (материала) объектов в одном или нескольких файлах .OBJ.Конструктор
MTLLoader(
manager - менеджер, управляющий')" onmouseout="hide()">loadingManager )
loading manager - менеджер загрузки, управляющий загрузкой')" onmouseout="hide()">loadingManager — менеджер загрузки, используемый для загрузки. Значением по умолчанию является THREE.DefaultLoadingManager.
Свойства
Методы
.load(
- единообразный локатор (определитель
местонахождения) ресурса.')" onmouseout="hide()">url, onLoad, onProgress, onError )
url — строка, содержащая путь/URL-адрес .mtl файла.
onLoad — функция, которая будет вызвана после успешного завершения загрузки, дополнительный, необязательный параметр.
В качестве аргумента, эта функция получает загруженный экземпляр MTLLoader.MaterialCreator.
onProgress — функция, которая будет вызываться пока идет процесс загрузки. Аргументом будет экземпляр XMLHttpRequest, что содержит сведения о загрузке total
и
размер загруженного ресурса')" onmouseout="hide()">loaded в байтах.
размер загруженного ресурса')" onmouseout="hide()">loaded в байтах.
onError — функция, которая будет вызвана в случае ошибки при загрузке, дополнительный, необязательный параметр. Функция принимает ошибку в качестве аргумента.
Начинает загрузку с переданного url-адреса и возвращает загруженный материал..setPath( path )
path — обязательный параметр.
Устанавливает базовый путь для решающих ссылок. Если это установлено, этот путь будет добавлен к каждой загруженной и найденной ссылке..setTexturePath( path )
path — обязательный параметр.
Устанавливает базовый путь для решающих ссылок к текстуре. Если он установлен, этот путь будет добавлен к каждой загруженной и найденной ссылке к текстуре.
Если не установлен, а setPath имеется, он будет использоваться в качестве базового пути к текстуре..setCrossOrigin( useCrossOrigin )
useCrossOrigin — обязательный параметр.
Установите значение true, если нужно загрузить текстуры из другого источника..setMaterialOptions( options )
options — обязательный параметр.
● side: сторона, к которой применяется материал. THREE.FrontSide (значение по умолчанию), THREE.BackSide, THREE.DoubleSide
● wrap: тип укладки, применяемый для текстур.
- текстура повторяется до бесконечности')" onmouseout="hide()">THREE.RepeatWrapping (значение по умолчанию),
с прикреплением к краю - укладка, при которой
последний пиксел текстуры растягивается
до края сетки (mesh)')" onmouseout="hide()">THREE.ClampToEdgeWrapping,
укладка с зеркальным отражением - укладка
текстуры, при которой она повторяется
бесконечно, зеркально отображаясь при
каждом повторе')" onmouseout="hide()">THREE.MirroredRepeatWrapping.
● normalizeRGB: компоненты RGB должны быть нормализованы до 0-1 из 0-255. Значением по умолчанию является false, предполагается, что они уже нормализованы.
●
(значения) RGB (компонентов цвета)')" onmouseout="hide()">ignoreZeroRGBs: игнорировать значения в RGB формате (Ka, Kd, Ks), равные 0. Значением по умолчанию является false.
Устанавливает параметры построения материалов.● side: сторона, к которой применяется материал. THREE.FrontSide (значение по умолчанию), THREE.BackSide, THREE.DoubleSide
● wrap: тип укладки, применяемый для текстур.
- текстура повторяется до бесконечности')" onmouseout="hide()">THREE.RepeatWrapping (значение по умолчанию),
с прикреплением к краю - укладка, при которой
последний пиксел текстуры растягивается
до края сетки (mesh)')" onmouseout="hide()">THREE.ClampToEdgeWrapping,
укладка с зеркальным отражением - укладка
текстуры, при которой она повторяется
бесконечно, зеркально отображаясь при
каждом повторе')" onmouseout="hide()">THREE.MirroredRepeatWrapping.
● normalizeRGB: компоненты RGB должны быть нормализованы до 0-1 из 0-255. Значением по умолчанию является false, предполагается, что они уже нормализованы.
●
(значения) RGB (компонентов цвета)')" onmouseout="hide()">ignoreZeroRGBs: игнорировать значения в RGB формате (Ka, Kd, Ks), равные 0. Значением по умолчанию является false.
.parse( text )
text — текстовая структура mtl для разбора (синтаксического анализа).
Метод проводит синтаксический анализ текстовой структуры mtl и возвращает экземпляр MTLLoader.MaterialCreator.Исходники
OBJLoader
Загрузчик для загрузки ресурсов в формате obj.Формат файла OBJ - это простой формат данных, представляющий трехмерную геометрию в удобочитаемой для человека форме, в виде положения каждой вершины, UV-координат позиции каждой текстуры, связанных с вершиной, нормалей вершин, граней, образуемых каждым многоугольником, определяемым списком вершин, и вершин текстур.
Статья Википедии о формате obj на русском языке.
Пример
// instantiate a loader (создание экземпляра загрузчика) var loader = new THREE.OBJLoader();
// load a resource (загрузка ресурса) loader.load( // resource URL (адрес ресурса) 'models/monster.obj', // called when resource is loaded (вызывается по завершении загрузки) function ( object ) { scene.add( object ); },
// called when loading is in progresses (вызывается во время загрузки) function ( xhr ) { console.log( ( xhr.loaded / xhr.total * 100 ) + '% loaded' );
},
// called when loading has errors (вызывается при ошибках в загрузке) function ( error ) { console.log( 'An error happened' ); } );
Другие примеры:
webgl / loader / obj
Конструктор
OBJLoader(
manager - менеджер, управляющий')" onmouseout="hide()">manager )
manager - менеджер, управляющий')" onmouseout="hide()">manager — менеджер загрузки, используемый для загрузки. Значением по умолчанию является THREE.DefaultLoadingManager.
Свойства
Методы
.load(
- единообразный локатор (определитель
местонахождения) ресурса')" onmouseout="hide()">url, onLoad, onProgress, onError )
url — строка, содержащая путь/URL-адрес obj-файла (обязательный аргумент).
onLoad — функция, которая будет вызвана после успешного завершения загрузки, дополнительный, необязательный параметр.
В качестве аргумента, эта функция получает загруженный Object3D.
onProgress - функция, которая будет вызываться пока идет процесс загрузки.
Аргументом будет экземпляр XMLHttpRequest, что содержит сведения о загрузке total
и
размер загруженного ресурса')" onmouseout="hide()">loaded в байтах.
размер загруженного ресурса')" onmouseout="hide()">loaded в байтах.
onError — функция, которая будет вызвана в случае ошибки при загрузке, дополнительный, необязательный параметр. Функция принимает ошибку в качестве аргумента.
Начинает загрузку с URL-адреса и после её успешного завершения вызывает функцию, указанную в onLoad, с разобранным содержимым ответа.
parse - разбор, синтаксический анализ')" onmouseout="hide()">.parse( text )
text — текстовая структура obj для разбора (синтаксического анализа).
Метод возвращает Object3D. Он содержит обработанные сетки в виде Mesh и линии в виде LineSegments.Все геометрические элементы созданы как BufferGeometry. Материалы по умолчанию создаются как MeshPhongMaterial.
Если obj-объект или группа при объявлении граней используют несколько материалов, применяют массивы материалов и группы геометрических элементов.
Исходники
OBJLoader2
Загрузчик для загрузки ресурсов в формате obj.Формат файла OBJ - это простой формат данных, представляющий трехмерную геометрию в удобочитаемой для человека форме, в виде положения каждой вершины, UV-координат позиции каждой текстуры, связанных с вершиной, нормалей вершин, граней, образуемых каждым многоугольником, определяемым списком вершин, и вершин текстур.
Статья Википедии о формате obj на русском языке.
Пример
// instantiate the loader (создание экземпляра загрузчика) var loader = new THREE.OBJLoader2();
// function called on successful load (вызывается по успешному завершению загрузки) var callbackOnLoad = function ( event ) { scene.add( event.detail.loaderRootNode ); };
// load a resource from provided URL synchronously // синхронная загрузка ресурса из предоставленного URL-адреса loader.load( 'obj/female02/female02.obj', callbackOnLoad, null, null, null, false );
Другие примеры:
webgl / loader / obj2 - простой пример Example for multiple use-cases (parse, load and run with instructions (sync and async) webgl / loader / obj2 / options Advanced example using LoaderSupport.LoaderWorkerDirector for orchestration of multiple workers. webgl / loader / obj2 / run / director
Конструктор
OBJLoader2(
manager - менеджер, управляющий')" onmouseout="hide()">manager,
logger - регистратор, логгер, самописец')" onmouseout="hide()">logger )
manager — менеджер загрузки, используемый для загрузки.
Значением по умолчанию является THREE.DefaultLoadingManager.
logger - используемый регистратор.
Use OBJLoader2 to load OBJ data from files or to parse OBJ data from arraybuffer or text.Свойства
Методы
.parse ( {content : arraybuffer|content : String] ) : Object3D
[content|content] OBJ data as Uint8Array or String
Parses OBJ data synchronously from arraybuffer or string and returns the loaderRoorNode..parseAsync ( content : arraybuffer, onLoad : Function ) : Object3D
content - OBJ data as Uint8Array
onLoad - Called after worker successfully completed loading
Parses OBJ content asynchronously from arraybuffer..load(
- единообразный локатор (определитель
местонахождения) ресурса')" onmouseout="hide()">url, onLoad, onProgress, onError, onMeshAlter, useAsync )
url — строка, содержащая путь/URL-адрес загружаемого файла (обязательный аргумент).
onLoad — функция, которая будет вызвана после успешного завершения загрузки, дополнительный, необязательный параметр.
В качестве аргумента, эта функция получает загруженный Object3D.
onProgress - функция, которая будет вызываться пока идет процесс загрузки, дополнительный, необязательный параметр.
Аргументом будет экземпляр XMLHttpRequest, что содержит сведения о загрузке total
и
размер загруженного ресурса')" onmouseout="hide()">loaded в байтах.
размер загруженного ресурса')" onmouseout="hide()">loaded в байтах.
onError — функция, которая будет вызвана в случае ошибки при загрузке, дополнительный, необязательный параметр. Функция принимает ошибку в качестве аргумента.
onMeshAlter - (optional) A function to be called after a new mesh raw data becomes available for alteration.
useAsync - (optional) If true, uses async loading with worker, if false loads data synchronously.
Use this convenient method to load a file at the given URL. By default the fileLoader uses an ArrayBuffer..run ( params : LoaderSupport.PrepData, workerSupportExternal : LoaderSupport.WorkerSupport ) : null
params - prepData All parameters and resources required for execution
workerSupportExternal - Use pre-existing WorkerSupport
Run the loader according the provided instructions..setLogging( enabled, debug )
enabled True or false.
debug True or false.
Enable or disable logging in general (except warn and error), plus enable or disable debug logging..setModelName( modelName )
modelName
Метод устанавливает название (имя) модели..setPath( path )
path - URL-адрес.
The URL of the base path..setStreamMeshesTo ( streamMeshesTo : Object3D ) : null
streamMeshesTo - Object already attached to scenegraph where new meshes will be attached to
Set the node where the loaded objects will be attached directly..setMaterials ( Array of materials : Material ) : null
Array of materials - Array of Materials
Set materials loaded by MTLLoader or any other supplier of an Array of Materials..setUseIndices ( useIndices ) : null
useIndices
Instructs loaders to create indexed BufferGeometry..setDisregardNormals( disregardNormals )
disregardNormals
Tells whether normals should be completely disregarded and regenerated..setMaterialPerSmoothingGroup( materialPerSmoothingGroup )
materialPerSmoothingGroup
Tells whether a material shall be created per smoothing group..onProgress( type, text, numericalValue )
type - тип события.
text - текстовое описание события.
numericalValue - числовое значение, характеризующее ход процесса.
Announce feedback which is give to the registered LoaderSupport.Callbacks..loadMtl(
- единообразный локатор (определитель
местонахождения) ресурса')" onmouseout="hide()">url, content,
вызова (по окончании) загрузки')" onmouseout="hide()">callbackOnLoad, crossOrigin, materialOptions )
url - URL-адрес файла.
content - содержимое файла в виде массив буфера (arraybuffer)или текста.
callbackOnLoad - функция обратного вызова, которая будет вызвана после успешной загрузки.
crossOrigin - значение
- совместное использование ресурсов между разными
источниками — технология современных браузеров, которая
позволяет предоставить веб-странице доступ к ресурсам
другого домена')" onmouseout="hide()">CORS. Дополнительный, необязательный аргумент.
- совместное использование ресурсов между разными
источниками — технология современных браузеров, которая
позволяет предоставить веб-странице доступ к ресурсам
другого домена')" onmouseout="hide()">CORS. Дополнительный, необязательный аргумент.
materialOptions - Set material loading options for MTLLoader. Дополнительный, необязательный аргумент.
Utility method for loading an mtl file according resource description. Provide url or content.Исходники
LoaderSupport
Вспомогательные классы для загрузчиков файлов и веб обработчиков на основе загрузчиков.Подклассы
LoaderSupport.Builder LoaderSupport.LoadedMeshUserOverride LoaderSupport.WorkerSupport LoaderSupport.WorkerRunnerRefImpl LoaderSupport.WorkerDirector LoaderSupport.ResourceDescriptor LoaderSupport.PrepData LoaderSupport.Callbacks LoaderSupport.Validator
Пример
webgl / loader / obj2 / meshspray - пример использования LoaderSupport.WorkerDirector и LoaderSupport.WorkerSupport.Builder
Конструктор
Builder( )Создает одну или несколько сеток из одного необработанного (исходного) набора буферных массивов, описаний групп материалов и последующих параметров. Поддерживаются буферы вершин, цвета вершин, нормалей, UV-координат и индексов.
Методы
.setLogging( enabled, debug )
enabled - логическое значение - true или false.
debug - логическое значение - true или false.
Метод включает или отключает ведение журнала (логирование) в общем (за исключением предупреждений и ошибок), плюс включает или отключает логирование ошибок..init( )
Инициализирует сборщик (Builder) (на настоящий момент только инициализация материала по умолчанию)..setMaterials(
array of materials - массив материалов')" onmouseout="hide()">Array of materials )
Array of materials - массив материалов.
Устанавливает материалы, загруженные любым загрузчиком из массива материалов..processPayload( payload )
payload - необработанные описания сетки (Mesh) или материала (Material).
Делегирует обработку полезной нагрузки (построение сетки или обновление материала) соответствующим функциям (BW-совместимость)..buildMeshes( meshPayload )
meshPayload - необработанное описание сетки (буферы, параметры, материалы), используемые для построения одной или нескольких сеток.
Создает одну или несколько сеток из данных, описанных в полезной нагрузке (сведения о буферах, параметрах, материале)..updateMaterials( materialPayload )
materialPayload - инструкции по обновлению материала.
Обновляет материалы с объектами, содержащими материал, (синхронно) или с инструкциями по изменению (асинхронно)..getMaterialsJSON( )
Returns the mapping object of material name and corresponding jsonified material..getMaterials( )
Returns the mapping object of material name and corresponding material.LoadedMeshUserOverride
Конструктор
LoadedMeshUserOverride( disregardMesh, bufferGeometry )
disregardMesh - указывает реализации о полном игнорировании этой сетки.
alteredMesh - указывает реализации что сетка/сетки была изменена или добавлена.
Объект, возвращаемый функцией обратного вызова на изменение сетки. Используется для игнорирования определенной сетки или для возврата одной или нескольких сеток.Методы
.addMesh( mesh )
mesh - сетка
Добавляет сетку, созданную внутри функции обратного вызова..isDisregardMesh( )
Отвечает, если сетка должна быть полностью проигнорирована..providesAlteredMeshes( )
Отвечает, если была создана новая сетка/сетки.WorkerSupport
Конструктор
WorkerSupport( )Этот класс предоставляет средства для преобразования существующего кода синтаксического анализатора (парсера) в веб обработчика. Он определяет простой протокол связи, который позволяет настроить обработчика и во время выполнения принять необработанные данные сетки (mesh).
Методы
.setLogging( enabled, debug )
enabled - логическое значение - true или false.
debug - логическое значение - true или false.
Метод включает или отключает ведение журнала (логирование) вообще (за исключением предупреждений и ошибок), плюс включает или отключает логирование ошибок..setForceWorkerDataCopy( forceWorkerDataCopy )
forceWorkerDataCopy - логическое значение - true или false.
Принудительно передает все буферы массивов обработчикам для копирования..validate( functionCodeBuilder, Array of libLocations, libPath, runnerImpl )
functionCodeBuilder - функция, которая вызывается с funcBuildObject и funcBuildSingelton, что позволяет превращать в строку код объектов и
синглтонов.
Array of libLocations - URL-адрес библиотек, которые должны быть добавлены к рабочему коду относительно пути, переданном в аргументе libPath.
libPath - базовый путь, используемый для загрузки библиотек.
runnerImpl - реализация оболочки парсера обработчика по умолчанию (соединение и исполнение). Здесь может быть передан расширенный класс.
Проверяет состояние рабочего кода и полученного обработчика..setTerminateRequested( terminateRequested )
terminateRequested - логическое значение - true или false.
Запрашивает прекращение обработчика после завершения работы синтаксического анализатора (парсера)..setCallbacks( builder, onLoad )
builder - функция сборки. По умолчанию это LoaderSupport.Builder.
onLoad - функция, вызываемая по завершению синтаксического анализа (парсинга).
Определяет функцию, которая должна выполнить сборку, когда станут доступными новые исходные данные сетки, и функцию, вызываемую по завершению синтаксического анализа (парсинга)..run( payload )
payload - необработанное описание сетки (mesh) (буферы, параметры, материалы), используемые для построения одной или нескольких сеток.
Запускает в работу синтаксический анализатор (парсер) с предоставленными настройками.WorkerRunnerRefImpl
Конструктор
WorkerRunnerRefImpl( )Реализация по умолчанию WorkerRunner, ответственного за создание и настройку парсера внутри обработчика.
Методы
.applyProperties( parser, params )
parser - экземпляр синтаксического анализатора.
params - объект с параметрами.
Метод применяет значения из объекта params с помощью набора функций или через прямое присваивание..run( payload )
payload - необработанное описание сетки (mesh) (буферы, параметры, материалы), используемые для построения одной или нескольких сеток.
Настраивает реализацию синтаксического анализатора (парсера) в соответствии с предоставленным объектом конфигурации.WorkerDirector
Конструктор
WorkerDirector( classDef )
classDef - определение класса, используемого для построения
Организует загрузку нескольких OBJ-файлов/данных исходя из очереди инструкций (команд) с настраиваемым числом обработчиков (1-16).
Последовательность операций:
- подготовка обработчиков (prepareWorkers)
- постановка в очередь на запуск (enqueueForRun)
- обработка очереди (processQueue)
- прекращение работы (tearDown)
- подготовка обработчиков (prepareWorkers)
- постановка в очередь на запуск (enqueueForRun)
- обработка очереди (processQueue)
- прекращение работы (tearDown)
Методы
.setLogging( enabled, debug )
enabled - логическое значение - true или false.
debug - логическое значение - true или false.
Метод включает или отключает ведение журнала (логирование) вообще (за исключением предупреждений и ошибок), плюс включает или отключает логирование ошибок..setForceWorkerDataCopy( forceWorkerDataCopy )
forceWorkerDataCopy - логическое значение - true или false.
Принудительно передает все буферы массивов обработчикам для копирования..prepareWorkers( globalCallbacks, maxQueueSize, maxWebWorkers )
globalCallbacks - реестр (список) глобальных (общих) функций обратного вызова, используемых всеми веб обработчиками.
maxQueueSize - установка максимального размера очереди инструкций (команд) (от 1 до 1024).
maxWebWorkers - установка максимального числа обработчиков (от 1 до 16).
Создает или удаляет обработчики в соответствии с ограничениями. Устанавливает название и регистрирует функции обратного вызова для динамического создания веб обработчиков..enqueueForRun(
run params - параметры запуска')" onmouseout="hide()">runParams )
runParams
Сохраняет инструкции запуска во внутренней instructionQueue - очереди инструкций..processQueue( )
Метод обрабатывает очередь инструкций (команд) пока она не закончится..tearDown( callbackOnFinishedProcessing )
callbackOnFinishedProcessing - функция, вызываемая по завершении обработки всеми обработчиками.
Метод прекращает работу всех обработчиков..getMaxQueueSize( )
Возвращает максимальную длину очереди инструкций (команд)..getMaxWebWorkers( )
Возвращает максимальное число обработчиков..isRunning( )
Возвращает значение true, если кто-либо из обработчиков находится в работе..setCrossOrigin( crossOrigin )Устанавливает строковое значение CORS, которое будет использоваться.
ResourceDescriptor
Конструктор
ResourceDescriptor(
- единообразный локатор (определитель
местонахождения) ресурса')" onmouseout="hide()">url, extension )
url - URL-адрес к файлу.
extension - расширение файла (тип).
Описание ресурса, используемое LoaderSupport.PrepData и другими.Методы
.setContent( content )
content - содержимое файла в форме буферного массива или текста.
Метод устанавливает содержимое данного ресурса.PrepData
Конструктор
PrepData( modelName )
modelName - общее название модели.
Инструкции по настройке, используемые при запуске метода.Методы
.setLogging( enabled, debug )
enabled - логическое значение - true или false.
debug - логическое значение - true или false.
Метод включает или отключает ведение журнала (логирование) вообще (за исключением предупреждений и ошибок), плюс включает или отключает логирование ошибок..getCallbacks( )Возвращает все функции обратного вызова в форме LoaderSupport.Callbacks.
.addResource(
resource - ресурс')" onmouseout="hide()">resource )
resource - добавляемый LoaderSupport.ResourceDescriptor.
Метод добавляет описание ресурса..checkResourceDescriptorFiles(
resources - ресурсы')" onmouseout="hide()">resources, fileDesc )
resources - массив LoaderSupport.ResourceDescriptor.
fileDesc - объект, описывающий, какие ресурсы представляют интерес - расширение файла, тип (строковые или UInt8Array), а какие игнорируются - логические (boolean).
Распознает файлы или содержимое, представляющее интерес, из массива LoaderSupport.ResourceDescriptor.
Возвращает объект с каждым расширением и соответствующим LoaderSupport.ResourceDescriptor.Метод клонирует данный объект и впоследствии возвращает его. Функции обратного вызова и ресурсы в глубину не клонируются (ссылки!).
clone - клонировать')" onmouseout="hide()">.clone( )
Callbacks
Конструктор
Callbacks( )Функции обратного вызова, используемые загрузчиками и сборщиком (builder).
Методы
обратного вызова на событие «ход процесса»')" onmouseout="hide()">.setCallbackOnProgress(
вызова на событие «ход процесса»')" onmouseout="hide()">callbackOnProgress )
callbackOnProgress - функция обратного вызова для описанной функциональности.
Регистрируется функция обратного вызова, которая вызывается внутренней функцией announceProgress для вывода обратной связи.
функцию обратного вызова на изменение
сетки')" onmouseout="hide()">.setCallbackOnMeshAlter(
обратного вызова на изменение сетки')" onmouseout="hide()">callbackOnMeshAlter )
callbackOnMeshAlter - функция обратного вызова для описанной функциональности.
Регистрируется функция обратного вызова, которая вызывается всякий раз когда была загружена сетка (mesh).
Используйте LoadedMeshUserOverride для инструкций по изменению (геометрических элементов, материала или игнорированию сетки).
функцию обратного вызова на загрузку')" onmouseout="hide()">.setCallbackOnLoad( callbackOnLoad )
callbackOnLoad - функция обратного вызова для описанной функциональности.
Регистрируется функция обратного вызова, которая однократно вызывается по завершении полной загрузки OBJ-файла.
- установить функцию обратного
вызова на загрузку материалов')" onmouseout="hide()">.setCallbackOnLoadMaterials(
обратного вызова на загрузку материалов')" onmouseout="hide()">callbackOnLoadMaterials )
callbackOnLoadMaterials - функция обратного вызова для описанной функциональности.
Регистрируется функция обратного вызова, которая вызывается по окончании загрузки материалов.Validator
Конструктор
Validator( )Функции проверки.
Методы
.isValid( input )
input - значение может быть любым.
Если значением заданного аргумента input является null или undefined, возвращается значение false, в противном случае возвращается значение true..verifyInput( input, defaultValue )
input - значение может быть любым.
defaultValue - значение может быть любым.
Если значением заданного аргумента input является null или undefined, возвращается значение defaultValue, в противном случае возвращается значение input.Исходники
PCDLoader
Загрузчик для загрузки ресурсов в формате pcd.Формат файла pcd - это формат файла для Point Cloud Library. Вот статья Википедии об облаке точек.
Загрузчик поддерживает формат ascii и бинарный формат. Сжатые бинарные файлы не поддерживаются.
Пример
// instantiate a loader (создание экземпляра загрузчика) var loader = new THREE.PCDLoader();
// load a resource (загрузка ресурса) loader.load( // resource URL (URL-адрес ресурса) 'pointcloud.pcd',
// called when the resource is loaded (вызывается по завершении загрузки) function ( mesh ) { scene.add( mesh ); },
// called when loading is in progresses (вызывается во время загрузки) function ( xhr ) { console.log( ( xhr.loaded / xhr.total * 100 ) + '% loaded' ); },
// called when loading has errors (вызывается при ошибках в загрузке) function ( error ) { console.log( 'An error happened' ); } );
Другие примеры:
webgl / loader / pcd
Конструктор
PCDLoader(
manager - менеджер, управляющий')" onmouseout="hide()">manager )
manager — менеджер загрузки, используемый для загрузки.
Значением по умолчанию является THREE.DefaultLoadingManager.
Создает новый PCDLoader.Свойства
.littleEndian
Значением по умолчанию является true.Методы
.load(
- единообразный локатор (определитель
местонахождения) ресурса')" onmouseout="hide()">url, onLoad, onProgress, onError )
url — строка, содержащая путь/URL-адрес pcd-файла (обязательный аргумент).
onLoad — функция, которая будет вызвана после успешного завершения загрузки, дополнительный, необязательный параметр.
В качестве аргумента, эта функция получает загруженный Object3D.
onProgress - функция, которая будет вызываться пока идет процесс загрузки.
Аргументом будет экземпляр XMLHttpRequest, что содержит сведения о загрузке total
и
размер загруженного ресурса')" onmouseout="hide()">loaded в байтах.
размер загруженного ресурса')" onmouseout="hide()">loaded в байтах.
onError — функция, которая будет вызвана в случае ошибки при загрузке, дополнительный, необязательный параметр. Функция принимает ошибку в качестве аргумента.
Начинает загрузку с URL-адреса и после её успешного завершения вызывает функцию, указанную в onLoad, с .
Begin loading from url and call onLoad with the parsed response content.
parse - разбор, синтаксический анализ')" onmouseout="hide()">.parse( data, url )
data — двоичная структура для разбора (синтаксического анализа).
url — имя файла или url-адрес файла.
Метод производит синтаксический анализ (разбор) двоичной структуры в формате pcd и возвращает Object3D.Объект конвертируется в Points с BufferGeometry и PointsMaterial.
Исходники
PDBLoader
Загрузчик для загрузки ресурсов в формате .pdb.The Protein Data Bank file format is a textual file format describing the three-dimensional structures of molecules. The Protein Data Bank (pdb) file format is a textual file format describing the three-dimensional structures of molecules held in the Protein Data Bank.
Пример
// instantiate a loader (создание экземпляра загрузчика) var loader = new THREE.PDBLoader();
// load a PDB resource (загрузка PDB ресурса) loader.load( // resource URL (URL-адрес ресурса) 'models/molecules/caffeine.pdb',
// called when the resource is loaded (вызывается по завершении загрузки) function ( pdb ) { var geometryAtoms = pdb.geometryAtoms; var geometryBonds = pdb.geometryBonds; var json = pdb.json; console.log( 'This molecule has ' + json.atoms.length + ' atoms' ); },
// called when loading is in progresses (вызывается во время загрузки) function ( xhr ) { console.log( ( xhr.loaded / xhr.total * 100 ) + '% loaded' ); },
// called when loading has errors (вызывается при ошибках в загрузке) function ( error ) { console.log( 'An error happened' ); } );
Другие примеры:
webgl / loader / pdb
Конструктор
PDBLoader(
manager - менеджер, управляющий')" onmouseout="hide()">manager )
manager — менеджер загрузки, используемый для загрузки.
Значением по умолчанию является THREE.DefaultLoadingManager.
Создает новый PDBLoader.Свойства
Методы
.load(
- единообразный локатор (определитель
местонахождения) ресурса')" onmouseout="hide()">url, onLoad, onProgress, onError )
url — строка, содержащая путь/URL-адрес pdb-файла (обязательный аргумент).
onLoad — функция, которая будет вызвана после успешного завершения загрузки, дополнительный, необязательный параметр.
В качестве аргумента, эта функция получает
geometry atoms - геометрия атомов')" onmouseout="hide()">geometryAtoms,
geometry bonds - геометрия связей')" onmouseout="hide()">geometryBonds и структуру
текстовый формат описания объекта, основанный на JavaScript')" onmouseout="hide()">JSON.
geometry atoms - геометрия атомов')" onmouseout="hide()">geometryAtoms,
geometry bonds - геометрия связей')" onmouseout="hide()">geometryBonds и структуру
текстовый формат описания объекта, основанный на JavaScript')" onmouseout="hide()">JSON.
onProgress - функция, которая будет вызываться пока идет процесс загрузки.
Аргументом будет экземпляр XMLHttpRequest, что содержит сведения о загрузке total
и
размер загруженного ресурса')" onmouseout="hide()">loaded в байтах.
размер загруженного ресурса')" onmouseout="hide()">loaded в байтах.
onError — функция, которая будет вызвана в случае ошибки при загрузке, дополнительный, необязательный параметр. Функция принимает ошибку в качестве аргумента.
Начинает загрузку с URL-адреса и после её успешного завершения вызывает функцию, указанную в onLoad, с .
Begin loading from url and call onLoad with the parsed response content..parse( text )
text — текстовая структура pdb для разбора (синтаксического анализа).
Метод проводит синтаксический анализ (разбор) текста pdb-файла и возвращает структуру JSON.Исходники
SVGLoader
Загрузчик для загрузки ресурса в формате .svg.Формат svg основанный на формате векторных изображений XML для двумерной графики с поддержкой интерактивности и анимации.
Статья Википедии о SVG на русском языке.
Пример
// instantiate a loader (создание экземпляра загрузчика) var loader = new THREE.SVGLoader();
// load a SVG resource (загрузка SVG ресурса) loader.load( // resource URL (URL-адрес ресурса) 'data/svgSample.svg',
// called when the resource is loaded (вызывается по завершении загрузки) function ( doc ) { scene.add( new THREE.SVGObject(doc) ); },
// called when loading is in progresses (вызывается во время загрузки) function ( xhr ) { console.log( ( xhr.loaded / xhr.total * 100 ) + '% loaded' ); },
// called when loading has errors (вызывается при ошибках в загрузке) function ( error ) { console.log( 'An error happened' ); } );
Другие примеры:
webgl / loader / svg
Конструктор
SVGLoader(
manager - менеджер, управляющий')" onmouseout="hide()">manager )
manager — менеджер загрузки, используемый для загрузки.
Значением по умолчанию является THREE.DefaultLoadingManager.
Создает новый SVGLoader.Свойства
Методы
.load(
— единообразный локатор (определитель местонахождения)
ресурса')" onmouseout="hide()">url, onLoad, onProgress, onError )
url — обязательный параметр
onLoad — функция, которая должна быть вызвана по завершении загрузки.
Её аргументом должен быть загруженный SVGDocument.
onProgress — функция, которая будет вызываться во время хода процесса загрузки.
Аргументом будет экземпляр XMLHttpRequest, что содержит сведения о загрузке total
и
размер загруженного ресурса')" onmouseout="hide()">loaded в байтах.
размер загруженного ресурса')" onmouseout="hide()">loaded в байтах.
onError — функция, которая будет вызвана при ошибках загрузки.
Begin loading from url and call onLoad with the response content.Исходники
TGALoader
Загрузчик для загрузки ресурса в формате .tga.TGA - формат файлов для растровой графики.
Вот статья Википедии о формате TGA на русском языке.
Пример
// instantiate a loader (создание экземпляра загрузчика) var loader = new THREE.TGALoader();
// load a resource (загрузка ресурса) var texture = loader.load( // resource URL (URL-адрес ресурса) 'textures/crate_grey8.tga'
// called when loading is completed (вызывается по завершении загрузки) function ( texture ) { console.log( 'Texture is loaded' ); },
// called when the loading is in progresses (вызывается во время загрузки) function ( xhr ) { console.log( ( xhr.loaded / xhr.total * 100 ) + '% loaded' ); },
// called when the loading failes (вызывается при ошибках в загрузке) function ( error ) { console.log( 'An error happened' ); } );
var material = new THREE.MeshPhongMaterial( { color: 0xffffff, map: texture } );
Другие примеры:
webgl / loader / texture / tga
Конструктор
TGALoader(
manager - менеджер, управляющий')" onmouseout="hide()">manager )
manager — менеджер загрузки, используемый для загрузки.
Значением по умолчанию является THREE.DefaultLoadingManager.
Создает новый TGALoader.Методы
load - загрузить')" onmouseout="hide()">.load(
- единообразный локатор (определитель
местонахождения) ресурса')" onmouseout="hide()">url, onLoad, onProgress, onError )
url — строка, содержащая путь/URL-адрес tga-файла (обязательный аргумент).
onLoad — функция, которая будет вызвана после успешного завершения загрузки, дополнительный, необязательный параметр.
В качестве аргумента, эта функция получает загруженную DataTexture.
onProgress - функция, которая будет вызываться пока идет процесс загрузки.
Аргументом будет экземпляр XMLHttpRequest, что содержит сведения о загрузке total
и
размер загруженного ресурса')" onmouseout="hide()">loaded в байтах.
размер загруженного ресурса')" onmouseout="hide()">loaded в байтах.
onError — функция, которая будет вызвана в случае ошибки при загрузке, дополнительный, необязательный параметр. Функция принимает ошибку в качестве аргумента.
Начинает загрузку с URL-адреса и после её успешного завершения передает загруженную текстуру функции, указанную в onLoad.
Эта текстура также сразу возвращается для немедленного использования (но может быть полностью не загружена).Исходники
PRWMLoader
Загрузчик для загрузки ресурса в формате .prwm.Packed Raw WebGL Model is an open-source binary file format for nD geometries specifically designed for JavaScript and WebGL with a strong focus on fast parsing (from 1ms to 0.1ms in Chrome 59 on a MBP Late 2013). The parsing of PRWM file is especially fast when the endianness of the file is the same as the endianness of the client platform. More information on this here.
Пример
// instantiate a loader (создание экземпляра загрузчика) var loader = new THREE.PRWMLoader();
// load a resource (загрузка ресурса) loader.load( // resource URL (URL-адрес ресурса) 'models/nefertiti.le.prwm',
// called when resource is loaded (вызывается по завершении загрузки) function ( bufferGeometry ) { var object = new THREE.Mesh( bufferGeometry, new THREE.MeshNormalMaterial() ); scene.add( object ); },
// called when loading is in progresses (вызывается во время загрузки) function ( xhr ) { console.log( ( xhr.loaded / xhr.total * 100 ) + '% loaded' ); },
// called when loading has errors (вызывается при ошибках в загрузке) function ( error ) { console.log( 'An error happened' ); } );
Другие примеры:
webgl / loader / prwm
Конструктор
PRWMLoader(
manager - менеджер, управляющий')" onmouseout="hide()">manager )
manager — менеджер загрузки, используемый для загрузки.
Значением по умолчанию является THREE.DefaultLoadingManager.
Создает новый PRWMLoader.Свойства
Методы
.load(
- единообразный локатор (определитель
местонахождения) ресурса')" onmouseout="hide()">url, onLoad, onProgress, onError )
url — строка, содержащая путь/URL-адрес prwm-файла (обязательный аргумент). Any * character in the URL will be automatically replaced by le or be depending on the platform endianness.
onLoad — функция, которая будет вызвана после успешного завершения загрузки, дополнительный, необязательный параметр.
В качестве аргумента, эта функция получает загруженный BufferGeometry.
onProgress - функция, которая будет вызываться пока идет процесс загрузки.
Аргументом будет экземпляр XMLHttpRequest, что содержит сведения о загрузке total
и
размер загруженного ресурса')" onmouseout="hide()">loaded в байтах.
размер загруженного ресурса')" onmouseout="hide()">loaded в байтах.
onError — функция, которая будет вызвана в случае ошибки при загрузке, дополнительный, необязательный параметр. Функция принимает ошибку в качестве аргумента.
Начинает загрузку с URL-адреса и после её успешного завершения вызывает функцию, указанную в onLoad, с разобранным содержимым ответа.
Begin loading from url and call onLoad with the parsed response content.
parse - разбор, синтаксический анализ')" onmouseout="hide()">.parse( arrayBuffer )
arrayBuffer — ArrayBuffer containing the prwm data.
Parse a prwm file passed as an ArrayBuffer and directly return an instance of BufferGeometry..isBigEndianPlatform( )
Возвращает значение true, if the endianness of the platform is Big Endian, в противном случае значение false.Исходники
Дополнительные замечания
Данный загрузчик также доступен на npm как three-prwm-loader.Loader →
MMDLoader
Загрузчик для ресурсов в формате MMD.MMDLoader creates Three.js Objects from MMD resources as PMD, PMX, VMD, and VPD files. See MMDAnimationHelper for MMD animation handling as IK, Grant, and Physics.
If you want raw content of MMD resources, use .loadPMD/PMX/VMD/VPD methods.
Пример
// Instantiate a loader (создание экземпляра загрузчика) var loader = new THREE.MMDLoader();
// Load a MMD model (загрузка MMD модели) loader.load( // path to PMD/PMX file (путь к PMD/PMX файлу 'models/mmd/miku.pmd',
// called when the resource is loaded (вызывается по окончании загрузки) function ( mesh ) { scene.add( mesh ); },
// called when loading is in progresses (вызывается в процессе загрузки) function ( xhr ) { console.log( ( xhr.loaded / xhr.total * 100 ) + '% loaded' ); },
// called when loading has errors (вызывается при ошибках в загрузке) function ( error ) { console.log( 'Произошла ошибка' ); } );
Другие примеры:
webgl / loader / mmd webgl / loader / mmd / pose webgl / loader / mmd / audio
Конструктор
MMDLoader(
manager - менеджер, управляющий')" onmouseout="hide()">manager )
manager — менеджер загрузки, используемый для загрузки.
Значением по умолчанию является THREE.DefaultLoadingManager.
Создает новый MMDLoader.Свойства
Методы
.load(
- единообразный локатор (определитель
местонахождения) ресурса')" onmouseout="hide()">url, onLoad, onProgress, onError )
url — строка, содержащая путь или url-адрес к pmd или pmx файлу.
onLoad — функция, которая будет вызвана после успешного завершения загрузки.
onProgress - функция, которая будет вызываться пока идет процесс загрузки (дополнительный, необязательный параметр).
Аргументом будет экземпляр XMLHttpRequest, что содержит сведения о загрузке total
и
размер загруженного ресурса')" onmouseout="hide()">loaded в байтах.
размер загруженного ресурса')" onmouseout="hide()">loaded в байтах.
onError — функция, которая будет вызвана в случае ошибки при загрузке (дополнительный, необязательный параметр). Функция принимает ошибку в качестве аргумента.
Начинает загрузку файла модели в формате PMD/PMX из местоположения, указанного в аргументе url и запускает функцию обратного вызова (аргумент onLoad)
с разобранным SkinnedMesh, содержащим BufferGeometry
и массив из MeshToonMaterial..loadAnimation(
- единообразный локатор (определитель
местонахождения) ресурса')" onmouseout="hide()">url,
object - объект')" onmouseout="hide()">object, onLoad, onProgress, onError )
url — строка или массив строк, содержащая(ий) путь или url-адрес к vmd файлу(ам). Если указаны два или более файлов, они будут объединены.
object — SkinnedMesh or Camera. Clip and its tacks will be fitting to this object.
onLoad — функция, которая будет вызвана после успешного завершения загрузки.
onProgress - функция, которая будет вызываться пока идет процесс загрузки (дополнительный, необязательный параметр).
Аргументом будет экземпляр XMLHttpRequest, что содержит сведения о загрузке total
и
размер загруженного ресурса')" onmouseout="hide()">loaded в байтах.
размер загруженного ресурса')" onmouseout="hide()">loaded в байтах.
onError — функция, которая будет вызвана в случае ошибки при загрузке (дополнительный, необязательный параметр). Функция принимает ошибку в качестве аргумента.
Begin loading VMD motion file(s) from url(s) and fire the callback function with the parsed AnimatioinClip..loadWithAnimation( modelUrl, vmdUrl, onLoad, onProgress, onError )
modelUrl — строка, содержащая путь или url-адрес к pmd или pmx файлу.
vmdUrl — строка или массив строк, содержащая(ий) путь или url-адрес к vmd файлу(ам).
onLoad — функция, которая будет вызвана после успешного завершения загрузки.
onProgress - функция, которая будет вызываться пока идет процесс загрузки (дополнительный, необязательный параметр).
Аргументом будет экземпляр XMLHttpRequest, что содержит сведения о загрузке total
и
размер загруженного ресурса')" onmouseout="hide()">loaded в байтах.
размер загруженного ресурса')" onmouseout="hide()">loaded в байтах.
onError — функция, которая будет вызвана в случае ошибки при загрузке (дополнительный, необязательный параметр). Функция принимает ошибку в качестве аргумента.
Begin loading PMD/PMX model file and VMD motion file(s) from urls and fire the callback function with an Object containing parsed SkinnedMesh and AnimationClip fitting to the SkinnedMesh.
set cross origin - установить перекрестный источник')" onmouseout="hide()">.setCrossOrigin( crossOrigin )
crossOrigin — строковое значение для реализации
- совместное использование ресурсов между разными
источниками — технология современных браузеров, которая
позволяет предоставить веб-странице доступ к ресурсам
другого домена')" onmouseout="hide()">CORS для загрузки url-адреса с другого домена, который предоставляет CORS.
- совместное использование ресурсов между разными
источниками — технология современных браузеров, которая
позволяет предоставить веб-странице доступ к ресурсам
другого домена')" onmouseout="hide()">CORS для загрузки url-адреса с другого домена, который предоставляет CORS.
Исходники
Объекты
Mesh →
LensFlare
Создает имитацию блика объектива камеры, зависящего от направления освещения.Примечание: Для работы LensFlare у WebGLRenderer аргумент alpha должен быть установлен как true.
Пример
var light = new THREE.PointLight( 0xffffff, 1.5, 2000 );
var textureLoader = new THREE.TextureLoader();
var textureFlare0 = textureLoader.load( "textures/lensflare/lensflare0.png" ); var textureFlare1 = textureLoader.load( "textures/lensflare/lensflare2.png" ); var textureFlare2 = textureLoader.load( "textures/lensflare/lensflare3.png" );
var lensflare = new THREE.Lensflare();
lensflare.addElement( new THREE.LensflareElement( textureFlare0, 512, 0 ) ); lensflare.addElement( new THREE.LensflareElement( textureFlare1, 512, 0 ) ); lensflare.addElement( new THREE.LensflareElement( textureFlare2, 60, 0.6 ) );
light.add( lensflare );
Другие примеры:
webgl / lensflares
Конструктор
LensFlare(
texture - текстура')" onmouseout="hide()">texture, size, distance,
color - цвет')" onmouseout="hide()">color,
blending - смешивание')" onmouseout="hide()">blending )
texture — THREE.Texture to use for the flare.
size — размер в пикселах. Дополнительный, необязательный аргумент.
distance — значение в диапазоне от 0 до 1, начиная с источника света (значение 0 соответствует местоположению на источнике света). Дополнительный, необязательный аргумент.
color — цвет блика от линзы объектива. Дополнительный, необязательный аргумент.
blending —
blending - смешивание')" onmouseout="hide()">режим смешивания. Значением по умолчанию является THREE.NormalBlending. Дополнительный, необязательный аргумент.
blending - смешивание')" onmouseout="hide()">режим смешивания. Значением по умолчанию является THREE.NormalBlending. Дополнительный, необязательный аргумент.
Свойства
Сведения об общих свойствах смотрите в описании базового класса Mesh..isLensflare
Свойство используется для проверки, является ли данный класс и производные от него Lensflare. Значением по умолчанию является true.Не нужно его изменять, так как оно используется для оптимизации внутри three.js.
Исходники
Экспортеры
GLTFExporter
An exporter for glTF 2.0.glTF (GL Transmission Format) is an open format specification for efficient delivery and loading of 3D content. Assets may be provided either in JSON (.gltf) or binary (.glb) format. External files store textures (.jpg, .png, ...) and additional binary data (.bin). A glTF asset may deliver one or more scenes, including meshes, materials, textures, skins, skeletons, morph targets, animations, lights, and/or cameras.
Пример
// Instantiate a exporter (создаем экземпляр экспортера) var exporter = new THREE.GLTFExporter( defaultOptions );
// Parse the input and generate the glTF output // анализ входных данных и генерация выходных данных glTF exporter.parse( scene, function ( gltf ) { console.log( gltf ); downloadJSON( gltf ); }, options );
Другие примеры:
misc / exporter / gltf
Конструктор
GLTFExporter( )Создает новый GLTFExporter.
Методы
.parse( input, onCompleted, options )
input — сцены или объекты для экспорта. Допустимые параметры:
● экспорт сцен
● экспорт сцен
exporter.parse( scene1, ...)
exporter.parse( [ scene1, scene2 ], ...)● экспорт объектов (при этом создается новая сцена для хранения всех объектов)
exporter.parse( object1, ...)
exporter.parse( [ object1, object2 ], ...)● смесь сцен и объектов (при этом, как обычно, экспортируются сцены, но будет создана новая сцена для хранения всех одиночных объектов.
exporter.parse( [ scene1, object1, object2, scene2 ], ...)
onCompleted — Will be called when the export completes. The argument will be the generated glTF JSON or binary ArrayBuffer.
options - Export options
● trs - экспорт позиции (position), поворота (rotation) и масштаба (scale) вместо матрицы каждого узла. Значением по умолчанию является false.
● onlyVisible - экспорт только видимых объектов. Значением по умолчанию является true.
● truncateDrawRange - Export just the attributes within the drawRange, if defined, instead of exporting the whole array. Значением по умолчанию является true.
● binary - Export in binary (.glb) format, returning an ArrayBuffer. Значением по умолчанию является false.
● embedImages - Export with images embedded into the glTF asset. Значением по умолчанию является true.
● animations - массив <AnimationClip>. List of animations to be included in the export.
● forceIndices - Generate indices for non-index geometry and export with them. Значением по умолчанию является false.
● forcePowerOfTwoTextures - Export with images resized to POT size. This option works only if embedImages is true. Значением по умолчанию является false.
Generates a .gltf (JSON) or .glb (binary) output from the input (Scene or Objects)● trs - экспорт позиции (position), поворота (rotation) и масштаба (scale) вместо матрицы каждого узла. Значением по умолчанию является false.
● onlyVisible - экспорт только видимых объектов. Значением по умолчанию является true.
● truncateDrawRange - Export just the attributes within the drawRange, if defined, instead of exporting the whole array. Значением по умолчанию является true.
● binary - Export in binary (.glb) format, returning an ArrayBuffer. Значением по умолчанию является false.
● embedImages - Export with images embedded into the glTF asset. Значением по умолчанию является true.
● animations - массив <AnimationClip>. List of animations to be included in the export.
● forceIndices - Generate indices for non-index geometry and export with them. Значением по умолчанию является false.
● forcePowerOfTwoTextures - Export with images resized to POT size. This option works only if embedImages is true. Значением по умолчанию является false.
Исходники
Плагины
Lut
Представляет таблицу поиска для карт цвета. Она используется для определения значений цвета из ряда значений данных.Пример
var lut = new THREE.Lut( "rainbow", 512 );
var data = [0, 10.1, 4.2, 3.4, 63, 28];
lut.setMax(63);
color = lut.getColor(10);
Конструктор
Lut( colormap, numberOfColors )
colormap — дополнительный, необязательный аргумент, устанавливающий цветовую карту из предустановленных цветовых карт. Доступны карты цвета: "rainbow", "cooltowarm", "blackbody".
numberOfColors — дополнительный, необязательный аргумент, который устанавливает количество значений цвета, используемых для представления массива данных.
Свойства
.minV
Минимальное значение, которое должно быть представлено в таблице поиска. Значение по умолчанию равно 0..maxV
Максимальное значение, которое должно быть представлено в таблице поиска. Значение по умолчанию равно 1..legend
Обозначение (легенда) таблицы поиска.Методы
.copy(
lut - сокращ. англ. слов lookup table - таблица поиска, просмотра')" onmouseout="hide()">lut )
this - этот, данный')" onmouseout="hide()">this
color — копируемая таблица поиска.
Копирует заданную таблицу поиска..setLegendOn( parameters )
parameters — { layout: value, position: { x: value, y: value, z: value }, dimensions: { width: value, height: value } }
● layout — Horizontal or vertical layout. Default is vertical.
● position — The position x,y,z of the legend.
● dimensions — The dimensions (width and height) of the legend.
Sets this Lut with the legend on.● layout — Horizontal or vertical layout. Default is vertical.
● position — The position x,y,z of the legend.
● dimensions — The dimensions (width and height) of the legend.
.setLegendOffSets this Lut with the legend off.
.setLegendLabels( parameters, callback )
parameters — { fontsize: value, fontface: value, title: value, um: value, ticks: value, decimal: value, notation: value }
● fontsize — размер шрифта, используемого для надписей.
● fontface — тип шрифта, используемого для надписей.
● title — The title of the legend.
● um — единицы измерения The unit of measurements of the legend.
● ticks — The number of ticks to be displayed.
● decimal — The number of decimals to be used for legend values.
● notation — Legend notation: standard (default) or scientific.
● fontsize — размер шрифта, используемого для надписей.
● fontface — тип шрифта, используемого для надписей.
● title — The title of the legend.
● um — единицы измерения The unit of measurements of the legend.
● ticks — The number of ticks to be displayed.
● decimal — The number of decimals to be used for legend values.
● notation — Legend notation: standard (default) or scientific.
callback — An optional callback to be used to format the legend labels.
Sets the labels of the legend of this Lut.
set minV - установить значение minV')" onmouseout="hide()">.setminV( minV )
minV — минимальное значение, которое должно быть представлено в таблице поиска.
Устанавливает данный Lut с представленным минимальным значением.
set maxV - установить значение maxV')" onmouseout="hide()">.setmaxV( maxV )
maxV - максимальное значение, которое должно быть представлено в таблице поиска.
Устанавливает данный Lut с представленным максимальным значением.
change number of colors - изменить число значений цвета')" onmouseout="hide()">.changeNumberOfColors( numberOfColors )
numberOfColors — количество значений цвета, используемых для представления массива данных.
Устанавливает данный Lut с количеством используемых значений цвета.
change color map - изменить карту цвета')" onmouseout="hide()">.changeColorMap( colorMap )
colorMap — название карты цвета, которая будет использоваться для представления массива данных.
Sets this Lut with the colormap to be used.Insert a new color map into the set of available color maps.
add color map - добавить карту цвета')" onmouseout="hide()">.addColorMap( colorMapName, arrayOfColors )
get color - получить цвет')" onmouseout="hide()">.getColor( value )
this - этот, данный')" onmouseout="hide()">this
value — значение данных, отображаемое в виде цвета.
Метод возвращает Color.Исходники
Material →
SpriteCanvasMaterial
Create a material that can draw custom sprites using a 2d canvas.Конструктор
SpriteCanvasMaterial( parameters )
Аргумент parameters является объектом, который можно использовать для установки в свойства значений по умолчанию
color — цвет спрайта.
program — программа для прорисовки спрайта.
Свойства
Цвет спрайта. The material will set up the color for the context before calling the material's program.
color - цвет')" onmouseout="hide()">.color
Методы
.program(
context - контекст')" onmouseout="hide()">context,
color - цвет')" onmouseout="hide()">color )
context — The canvas context
color — цвет спрайта.
Define a program that will use the context to draw the sprite.Исходники
QuickHull
Алгоритм быстрой оболочки (QuickHull) — алгоритм построения выпуклой оболочки на плоскости. Использует идею быстрой сортировки Хоара.Статья русскоязычной Википедии "Алгоритм быстрой оболочки".
Статья англоязычной Википедии "QuickHull".
Face
Представляет секцию, ограниченную определенным числом полуребер. Текущая реализация предполагает, что грань всегда состоит из трех ребер. Represents a section bounded by a specific amount of half-edges. The current implementation assumes that a face always consist of three edges.Конструктор
Face( )
Свойства
Вектор нормали к грани. Значением по умолчанию является трехмерный вектор (0, 0, 0).
normal - нормаль')" onmouseout="hide()">.normal
Средняя точка или центроид грани. Значением по умолчанию является трехмерный вектор (0, 0, 0).
midpoint - средняя точка')" onmouseout="hide()">.midpoint
.area
Площадь грани. Значение по умолчанию равно 0..constant
Знаковое расстояние от грани до начала координат. Значение по умолчанию равно 0.Reference to a vertex in a vertex list this face can see. Значением по умолчанию является null.
outside - за пределами, снаружи')" onmouseout="hide()">.outside
.mark
Свойство указывает, видима грань или удалена. Значением по умолчанию является Visible.
Ссылка на базовое ребро грани. Для получения всех ребер можно воспользоваться ссылкой next текущей грани. Значением по умолчанию является null.
edge - ребро, край')" onmouseout="hide()">.edge
Методы
create - создать')" onmouseout="hide()">.create( a, b, c )
a - первая вершина грани.
b - вторая вершина грани.
c - третья вершина грани.
Создает грань.
get edge - получить ребро')" onmouseout="hide()">.getEdge( i )
i - индекс ребра.
Возвращает ребро по заданному индексу.Вычисляет все свойства этой грани.
compute - вычислить')" onmouseout="hide()">.compute( )
.distanceToPoint(
point - точка')" onmouseout="hide()">point )
point - любая точка в трехмерном пространстве.
Возвращает знаковое расстояние от заданной точки до плоскости, представленной данной гранью.Исходники
HalfEdge
Основа для полурёберной структуры данных (half-edge data structure), также известной как двусвязный список рёбер (doubly connected edge list - DCEL).Конструктор
HalfEdge(
vertex - вершина')" onmouseout="hide()">vertex,
face - грань')" onmouseout="hide()">face )
vertex - ссылка на свою целевую вершину.
face - ссылка на свою грань.
Свойства
Reference to the destination vertex. The origin vertex can be obtained by querying the destination of its twin, or of the previous half-edge. Значением по умолчанию является undefined, т.е. значение не определено.
vertex - вершина')" onmouseout="hide()">.vertex
Ссылка на предыдущее полуребро той же самой грани. Значением по умолчанию является null.
prev - сокращ. англ. слова previous - предыдущий')" onmouseout="hide()">.prev
Ссылка на следующее полуребро той же самой грани. Значением по умолчанию является null.
next - следующий')" onmouseout="hide()">.next
Ссылка на парное полуребро для достижения противоположной грани. Reference to the twin half-edge to reach the opposite face. Значением по умолчанию является null.
twin - двойной')" onmouseout="hide()">.twin
Каждое полуребро ограничивает отдельную грань и поэтому имеет ссылку на эту грань. Each half-edge bounds a single face and thus has a reference to that face. Значением по умолчанию является undefined, т.е. значение не определено.
face - грань')" onmouseout="hide()">.face
Методы
Возвращает целевую вершину (вершину назначения).
head - голова')" onmouseout="hide()">.head( )
Возвращает исходную (начальную) вершину.
tail - хвост')" onmouseout="hide()">.tail()
.length( )
Возвращает эвклидову длину (расстояние по прямой) ребра.Статья Википедии о эвклидовом расстоянии на русском языке.
.lengthSquared( )
Возвращает квадрат эвклидовой длины (расстояние по прямой) ребра.Статья Википедии о эвклидовом расстоянии на русском языке.
set twin - установить двойника (парное ребро)')" onmouseout="hide()">.setTwin(
edge - ребро')" onmouseout="hide()">.edge )
edge - любое полуребро.
Метод устанавливает парное ребро к данному полуребру. Также он правильно устанавливает двойную ссылку заданного полуребра.Исходники
QuickHull
Общие сведения об алгоритме Quickhull: Dirk Gregorius. March 2014, Game Developers Conference: Implementing QuickHull.Конструктор
QuickHull( )
Свойства
.tolerance
The epsilon value that is used for internal comparative operations. Вычисление этого значения зависит от размера геометрического элемента. Значение по умолчанию равно -1..faces
The generated faces of the convex hull. Значением по умолчанию является пустой массив..newFaces
This array holds the faces that are generated within a single iteration. Значением по умолчанию является пустой массив.Данный список вершин содержит все вершины, назначенные грани. Значением по умолчанию является пустой список вершин.
assigned - присвоить, назначить')" onmouseout="hide()">.assigned
Данный список вершин содержит все вершины, не назначенные грани. Значением по умолчанию является пустой список вершин.
unassigned - неназначить, отменить присвоенное')" onmouseout="hide()">.unassigned
.vertices
Внутреннее представление сведений о заданных геометрических элементах (массив вершин).Методы
set from points - установить из точек')" onmouseout="hide()">.setFromPoints( points )
points - массив трехмерных векторов, который будет содержать получающаяся выпуклая оболочка.
Вычисляет выпуклую оболочку по заданному массиву точек.
set from object - установить из объекта')" onmouseout="hide()">.setFromObject(
object - объект')" onmouseout="hide()">object )
object - Object3D по которому вычисляется выпуклая оболочка.
Вычисляет выпуклую оболочку по Object3D (включая его дочерние элементы), с учетом "мировых" преобразований как самого объекта, так и его потомков.Делает данную выпуклую оболочку пустой.
make empty - сделать пустой')" onmouseout="hide()">.makeEmpty( )
add vertex to face - добавить вершину к грани')" onmouseout="hide()">.addVertexToFace(
vertex - вершина')" onmouseout="hide()">vertex,
face - грань')" onmouseout="hide()">face )
vertex - добавляемая вершина.
face - целевая грань.
Adds a vertex to the 'assigned' list of vertices and assigns it to the given face.
remove vertex from face - удалить вершину грани')" onmouseout="hide()">.removeVertexFromFace(
vertex - вершина')" onmouseout="hide()">vertex,
face - грань')" onmouseout="hide()">face )
vertex - удаляемая вершина.
face - целевая грань.
Removes a vertex from the 'assigned' list of vertices and from the given face. It also makes sure that the link from 'face' to the first vertex it sees in 'assigned' is linked correctly after the removal.
remove all vertices from face - удалить все вершины грани')" onmouseout="hide()">.removeAllVerticesFromFace(
face - грань')" onmouseout="hide()">face )
face - The given face.
Removes all the visible vertices that a given face is able to see which are stored in the 'assigned' vertext list.
delete face vertices - удалить вершины грани')" onmouseout="hide()">.deleteFaceVertices(
face - грань')" onmouseout="hide()">face,
absorbing face - поглощающая грань')" onmouseout="hide()">absorbingFace )
face - The given face.
absorbingFace - An optional face that tries to absorb the vertices of the first face.
Removes all the visible vertices that 'face' is able to see.● If 'absorbingFace' doesn't exist, then all the removed vertices will be added to the 'unassigned' vertex list.
● If 'absorbingFace' exists, then this method will assign all the vertices of 'face' that can see 'absorbingFace'.
● If a vertex cannot see 'absorbingFace', it's added to the 'unassigned' vertex list.
resolve unassigned points - разрешить неназначенные точки')" onmouseout="hide()">.resolveUnassignedPoints( newFaces )
newFaces - массив новых граней.
Reassigns as many vertices as possible from the unassigned list to the new faces..computeExtremes( )
Метод вычисляет экстремальные значения (минимальный и максимальный векторы), которые будут использованы для расчета начальной оболочки.Computes the initial simplex assigning to its faces all the points that are candidates to form part of the hull.
compute initial hull - вычислить начальную оболочку')" onmouseout="hide()">.computeInitialHull( )
Удаляет неактивные (то есть, удаленные) грани из внутреннего списка граней.
reindex faces - переиндексация граней')" onmouseout="hide()">.reindexFaces()
Finds the next vertex to create faces with the current hull.
next vertex to add - следующая добавляемая вершина')" onmouseout="hide()">.nextVertexToAdd( )
● Let the initial face be the first face existing in the 'assigned' vertex list.
● If a face doesn't exist then return since there're no vertices left.
● Otherwise for each vertex that face sees find the one furthest away from it.
compute horizon - вычислить горизонт')" onmouseout="hide()">.computeHorizon(
eye point - ')" onmouseout="hide()">eyePoint,
cross edge - ')" onmouseout="hide()">crossEdge,
face - грань')" onmouseout="hide()">face, horizon )
eyePoint - координаты точки в трехмерном пространстве.
crossEdge - The edge used to jump to the current face.
face - The current face being tested.
horizon - The edges that form part of the horizon in CCW order.
Computes a chain of half edges in CCW order called the 'horizon'. For an edge to be part of the horizon it must join a face that can see 'eyePoint' and a face that cannot see 'eyePoint'.
add adjoining face - добавить прилегающую грань')" onmouseout="hide()">.addAdjoiningFace(
eye vertex - вершина')" onmouseout="hide()">eyeVertex,
horizon edge - край (ребро) горизонта')" onmouseout="hide()">horizonEdge )
eyeVertex - вершина, добавляемая к оболочке.
horizonEdge - один край горизонта.
Creates a face with the vertices 'eyeVertex.point', 'horizonEdge.tail' and 'horizonEdge.head' in CCW order.All the half edges are created in CCW order thus the face is always pointing outside the hull
add new faces - добавить новые грани')" onmouseout="hide()">.addNewFaces(
eye vertex - вершина')" onmouseout="hide()">eyeVertex,
horizon - горизонт')" onmouseout="hide()">horizon )
eyeVertex - вершина, добавляемая к оболочке.
horizon - массив полуребер, формирующий горизонт.
Adds 'horizon.length' faces to the hull, each face will be linked with the horizon opposite face and the face on the left/right.
add vertex to hull - добавить вершину к оболочке')" onmouseout="hide()">.addVertexToHull(
eye vertex - вершина')" onmouseout="hide()">eyeVertex )
eyeVertex - вершина, добавляемая к оболочке.
Метод добавляет вершину к оболочке по следующему алгоритму:● Compute the 'horizon' which is a chain of half edges. For an edge to belong to this group it must be the edge connecting a face that can see 'eyeVertex' and a face which cannot see 'eyeVertex'.
● All the faces that can see 'eyeVertex' have its visible vertices removed from the assigned vertex list.
● A new set of faces is created with each edge of the 'horizon' and 'eyeVertex'. Each face is connected with the opposite horizon face and the face on the left/right.
● The vertices removed from all the visible faces are assigned to the new faces if possible.
Cleans up internal properties after computing the convex hull.
clean up - очистить')" onmouseout="hide()">.cleanup( )
Запускает выполнение алгоритма построения выпуклой оболочки (QuickHull).
compute - вычислить')" onmouseout="hide()">.compute( )
Исходники
VertexNode
Вершина в качестве узла двусвязного списка.Конструктор
VertexNode(
point - точка')" onmouseout="hide()">point )
point - точка-трехмерный вектор (x, y, z) в трехмерном пространстве.
Свойства
A point (x, y, z) in 3D space. Значением по умолчанию является undefined, т.е. значение не определено.
point - точка')" onmouseout="hide()">.point
Reference to the previous vertex in the double linked list. Значением по умолчанию является null.
prev - сокращ. англ. слова previous - предыдущий')" onmouseout="hide()">.prev
Reference to the next vertex in the double linked list. Значением по умолчанию является null.
next - следующий')" onmouseout="hide()">.next
Reference to the face that is able to see this vertex. Значением по умолчанию является undefined, т.е. значение не определено.
face - грань')" onmouseout="hide()">.face
Исходники
VertexList
ссылки в каждом узле указывают на предыдущий и на
последующий узел в списке. Как и односвязный список,
двусвязный допускает только последовательный доступ
к элементам, но при этом дает возможность
перемещения в обе стороны.')" onmouseout="hide()">Двусвязный список вершин.
Конструктор
VertexList( )
Свойства
Ссылка на первую вершину в связном списке. Значением по умолчанию является null.
head - голова')" onmouseout="hide()">.head
Ссылка на последнюю вершину в связном списке. Значением по умолчанию является null.
tail - хвост, окончание')" onmouseout="hide()">.tail
Методы
Возвращает головную ссылку, т.е. ссылка направлена в начало списка.
first - первый')" onmouseout="hide()">.first( )
Возвращает хвостовую ссылку, т.е. ссылка направлена в конец списка.
last - последний')" onmouseout="hide()">.last( )
Очищает связный список.
clear - очистить')" onmouseout="hide()">.clear( )
insert before - вставить перед')" onmouseout="hide()">.insertBefore(
target - цель')" onmouseout="hide()">target,
vertex - вершина')" onmouseout="hide()">vertex )
target - целевая вершина. Предполагается, что данная вершина входит в этот связный список.
vertex - вершина, которую нужно вставить.
Метод вставляет вершину в список перед целевой вершиной.
insert after - вставить после')" onmouseout="hide()">.insertAfter(
target - цель')" onmouseout="hide()">target,
vertex - вершина')" onmouseout="hide()">vertex )
target - целевая вершина. Предполагается, что данная вершина входит в этот связный список.
vertex - вершина, которую нужно вставить.
Метод вставляет вершину в список после целевой вершины.
append - добавлять, присоединять')" onmouseout="hide()">.append(
vertex - вершина')" onmouseout="hide()">vertex )
vertex - добавляемая вершина.
Добавляет вершину в конец связного списка.
append chain - добавить цепочку')" onmouseout="hide()">.appendChain(
vertex - вершина')" onmouseout="hide()">vertex )
vertex - головная (начальная) вершина в цепочке вершин.
Метод добавляет цепочку вершин, в которой заданная вершина является началом.
remove - удалить')" onmouseout="hide()">.remove(
vertex - вершина')" onmouseout="hide()">vertex )
vertex - удаляемая вершина.
Удаляет вершину из связного списка.
remove sublist - удалить вложенный список')" onmouseout="hide()">.removeSubList(
a - первая буква алфавита - здесь просто
обозначение первой (головной) вершины')" onmouseout="hide()">a,
b - вторая буква алфавита - здесь просто
обозначение конечной (хвостовой) вершины')" onmouseout="hide()">b )
a - голова (начало) вложенного списка.
b - хвост (конец) вложенного списка.
Удаляет вложенный список вершин из связного списка..isEmpty( )
Возвращает значение true, если связанный список пуст.Исходники
Визуализаторы
CanvasRenderer
The Canvas renderer displays your beautifully crafted scenes not using WebGL, but draws it using the (slower) Canvas 2D Context API.Примечание: Визуализатор Canvas уже устарел и больше не является частью основных элементов three.js.
Если, все же потребуется его использование, можно найти его здесь: examples/js/renderers/CanvasRenderer.js.
Этот визуализатор может быть хорошей альтернативой WebGLRenderer'у для простых сцен:
function webglAvailable() {
try {
var canvas = document.createElement( 'canvas' );
return !!( window.WebGLRenderingContext && (
canvas.getContext( 'webgl' ) ||
canvas.getContext( 'experimental-webgl' ) )
);
} catch ( e ) {
return false;
}
}
if ( webglAvailable() ) {
renderer = new THREE.WebGLRenderer();
} else {
renderer = new THREE.CanvasRenderer();
}
Примечание: both WebGLRenderer and CanvasRenderer are embedded in the web page using an HTML5 <canvas> tag. The "Canvas" in CanvasRenderer means it uses Canvas 2D instead of WebGL.
Don't confuse either CanvasRenderer with the SoftwareRenderer example, which simulates a screen buffer in a Javascript array.Конструктор
CanvasRenderer( parameters )
parameters - это дополнительный, необязательный объект со свойствами, определяющими поведение визуализатора. Конструктор также не принимает параметров вообще. Во всех случаях, когда параметры отсутствуют, он будет принимать обычные значения по умолчанию.
canvas - холст, на котором визуализатор рисует результат своей работы.
Он соответствует свойству domElement, описанному ниже. Если он не передается здесь, то будет создан новый элемент canvas.
alpha - будет ли canvas содержать буфер альфа-канала (прозрачность) или нет. Значением по умолчанию является false.
Свойства
.info
Объект с рядом статистических сведений о памяти видеокарты и процессе рендеринга (визуализации). Годится для отладки или просто ради любопытства. Объект содержит следующие поля:
render: -- визуализация vertices -- вершины faces -- грани
.domElement.
Холст, на котором визуализатор рисует результат своей работы.Он создается автоматически в конструкторе (если не предоставлен ранее); нужно просто добавить его на страницу.
Статья о DOM в Википедии.
.autoClear
Defines whether the renderer should automatically clear its output before rendering..sortObjects
Defines whether the renderer should sort objects. Значением по умолчанию является true.
Примечание: Sorting is used to attempt to properly render objects that have some degree of transparency. By definition, sorting objects may not work in all cases. Depending on the needs of application, it may be neccessary to turn off sorting and use other methods to deal with transparency rendering e.g. manually determining the object rendering order.
.sortElements
Defines whether the renderer should sort the face of each object. Значением по умолчанию является true.Методы
.render(
scene - сцена')" onmouseout="hide()">scene,
camera - камера')" onmouseout="hide()">camera )
scene - сцена')" onmouseout="hide()">scene -- отображаемая сцена.
camera - камера')" onmouseout="hide()">camera -- камера для просмотра сцены.
.clear()
Tells the renderer to clear its color drawing buffer with the clearcolor..setClearColor(
color - цвет')" onmouseout="hide()">color, alpha )
color -- The color to clear the canvas with.
alpha -- The alpha channel to clear the canvas with.
Метод устанавливает значение прозрачного цвета (clearColor) и значение коэффициента прозрачности (clearAlpha)..setSize( width, height )
width -- ширина холста для рисования.
height -- высота холста для рисования.
Метод устанавливает размер холста для рисования и, если установлен updateStyle,
то также обновляется css холста..setClearColorHex( hex, alpha )
hex -- шестнадцатиричное значение цвета, удаляемого с холста.
alpha -- значение альфа-канала (канала прозрачности) The alpha channel to clear the canvas with.
Данный метод устанавливает значение прозрачного цвета (clearColor) и значение коэффициента прозрачности (clearAlpha)..getClearColorHex( )
Возвращает шестнадцатиричное значение цвета..getClearAlpha()
Метод возвращает значение альфа-канала.Пустые методы для обеспечения совместимости с WebGLRenderer
.clearColor() .clearDepth() .clearStencil() .setFaceCulling() .supportsVertexTextures() .getMaxAnisotropy() - возвращает 1.
Исходники
CSS2DRenderer
CSS2DRenderer является упрощенной версией CSS3DRenderer. Единственная трансформация, здесь поддерживаемая, это перенос (translation).The renderer is very useful if you want to combine HTML based labels with 3D objects. Here too, the respective DOM elements are wrapped into an instance of CSS2DObject and added to the scene graph.
В отличие от CSS3DRenderer, здесь поддерживаются камеры с ортографической проекцией.
Примеры
molecules
Конструктор
CSS2DRenderer()
Методы
.getSize( )
Возвращает объект, содержащий ширину и высоту рендерера..render(Отображает сцену (аргумент scene) при помощи камеры (аргумент camera).
scene - сцена')" onmouseout="hide()">scene,
camera - камера')" onmouseout="hide()">camera )
.setSize( width, height )Изменяет размеры рендерера на указанные в аргументах width и height.
Исходники
CSS3DRenderer
CSS3DRenderer can be used to apply hierarchical 3D transformations to DOM elements via the CSS3 transform property.This renderer is particular interesting if you want to apply 3D effects to a website without canvas based rendering. It can also be used in order to combine DOM elements with WebGL content.
Тем не менее, существуют значительные ограничения:
- нельзя использовать систему материалов three.js.
- также нет возможности использовать геометрические элементы (Geometry).
- на данный момент поддерживается только камера с перспективной проекцией.
Примеры
molecules panorama periodictable sprites
Конструктор
CSS3DRenderer( )
Методы
.getSize( )
Возвращает объект, содержащий ширину и высоту рендерера..render(Отображает сцену (аргумент scene) при помощи камеры (аргумент camera) с перспективной проекцией.
scene - сцена')" onmouseout="hide()">scene,
camera - камера')" onmouseout="hide()">camera )
.setSize( width, height )Изменяет размеры рендерера на указанные в аргументах width и height.
Исходники
SVGRenderer
SVGRenderer может быть применен для визуализации данных геометрических элементов, использующих формат SVG. Получаемая векторная графика особенно эффективна в следующих случаях применения:- анимированные логотипы или иконки
- интерактивные двух-трехмерные диаграммы и графики.
- интерактивные карты
- сложные или анимированные пользовательские интерфейсы.
SVG-элементы можно оформить через CSS. И у них хорошая доступность, поскольку можно добавлять метаданные вроде названия (title) или описания (description) (используются поисковыми движками или программ считывания с экрана. SVG elements can be styled via CSS. And they have good accessibility since it's possible to add metadata like title or description (useful for search engines or screen readers).
Тем не менее, существуют значительные ограничения:
- нет дополнительной тонировки
- не поддерживается текстура
- не поддерживается тень.
Примеры
lines sandbox
Конструктор
SVGRenderer( )
Методы
.clear( )
Указывает рендереру очистить поверхность рисования. Tells the renderer to clear its drawing surface..render(Отображает сцену (аргумент scene) при помощи камеры (аргумент camera).
scene - сцена')" onmouseout="hide()">scene,
camera - камера')" onmouseout="hide()">camera )
.setClearColor(Устанавливает прозрачный цвет (clearColor) и его коэффициент прозрачности (clearAlpha).
color - цвет')" onmouseout="hide()">color, alpha )
.setPrecision( precision )Устанавливает точность данных, используемых для создания пути (контура).
.setQuality( )
Устанавливает качество визуализации. Возможные значения - low (низкое) и high (высокое). Значение по умолчанию - high..setSize( width, height )Изменяет размеры рендерера на указанные в аргументах width и height.
Исходники
Подсобные функции (утилиты)
BufferGeometryUtils
Класс, содержащий вспомогательные функции для экземпляров BufferGeometry.Методы
.computeTangents(
geometry - геометрия, в данном
случае - геометрический элемент')" onmouseout="hide()">geometry )
geometry -- экземпляр BufferGeometry, у которого должны быть атрибуты index, position, normal, и uv.
Метод вычисляет касательные и добавляет данному геометрическому элементу атрибут tangent.
merge BufferGeometries - слить (соединить) экземпляры BufferGeometry')" onmouseout="hide()">.mergeBufferGeometries(
случае - геометрические элементы')" onmouseout="hide()">geometries )
geometries -- массив экземпляров BufferGeometry.
Метод соединяет набор геометрических элементов в один экземпляр. Все геометрические элементы должны иметь совместимые атрибуты. Если объединение не получилось, метод возвращает значение null.
merge BufferAttributes - слить (соединить)
атрибуты буферных элементов')" onmouseout="hide()">.mergeBufferAttributes( attributes )
attributes -- массив экземпляров BufferGeometry.
Метод соединяет набор атрибутов в один экземпляр. Все атрибуты должны иметь совместимые свойства и типы,
а InterleavedBufferAttributes не поддерживается.
Если объединение не получилось, метод возвращает значение null.Исходники
SceneUtils
Класс, содержащий полезные служебные функции для работы со сценой.Методы
create multimaterial object - создать многоматериальный объект')" onmouseout="hide()">.createMultiMaterialObject(
geometry - геометрия, в данном
случае - геометрический элемент')" onmouseout="hide()">geometry, materials )
geometry -- геометрический элемент, для которого создается набор материалов.
materials -- материалы для объекта, указанного в geometry.
Создает новую группу, которая содержит новую сетку (mesh) для каждого материала, обозначенного в materials.
Будьте осторожными и помните, что это не то же самое, что и массив материалов, устанавливающий множество материалов для 1 сетки.В основном это выгодно для объектов, которым нужен как материал, так и реализация каркаса.
.attach(
child - ребёнок, в данном случае - дочерний объект')" onmouseout="hide()">child,
scene - сцена')" onmouseout="hide()">scene,
parent - родитель')" onmouseout="hide()">parent )
child -- объект, добавляемый к родительскому объекту (указанному в parent.
scene -- сцена, от которой отсоединяется объект.
parent -- родительский объект, к которому присоединяется объект child.
Метод присоединяет объект child к родительскому объекту parent, без перемещения объекта child в "мировом" пространстве.
Помните, что для этого нужно обновить matrixWorld, это можно сделать вызвав для родительского объекта метод updateMatrixWorld..detach(
child - ребёнок, в данном случае - дочерний объект')" onmouseout="hide()">child,
parent - родитель')" onmouseout="hide()">parent,
scene - сцена')" onmouseout="hide()">scene )
child -- объект, удаляемый от родительского объекта parent.
scene -- сцена, к которой присоединяется объект child.
parent -- родительский объект, от которого отсоединяется объект child.
Метод отсоединяет объект child от родительского объекта parent и добавляет его обратно на сцену, без перемещения в "мировом" пространстве.
Помните, что для этого нужно обновить matrixWorld, это можно сделать вызвав для родительского объекта метод updateMatrixWorld.Исходники
Анимация
CCDIKSolver
Решающее устройство (предназначенное для решения рассматриваемой
математической задачи. На вход решателю поступает
описание задачи в некоторой заданной форме, а на
выходе он выдает решение задачи.')" onmouseout="hide()">решатель) для
англ. inverse kinematics, IK) — процесс определения
параметров связанных гибких объектов (например,
кинематическая пара или кинематическая цепь) для достижения
необходимой позиции, ориентации и расположения этих
объектов. Инверсная кинематика является типом планирования
движения (англ.). Инверсная кинематика активно используется
в робототехнике, трёхмерной компьютерной анимации и в
разработке компьютерных игр. Она используется в основном
в тех ситуациях, когда необходимо точное позиционирование
гибких сочленений одного объекта относительно других
объектов окружающей среды.
Инверсная кинематика использует принцип, диаметрально
противоположный принципу прямой кинематики — перемещение
компонентов-потомков приводит к изменению положения
компонентов-предков, то есть алгоритм рассчитывает
положение и ориентацию компонентов-предков, исходя из
положения и ориентации компонентов-потомков.')" onmouseout="hide()">инверсной кинематики с
- циклический покоординатный спуск')" onmouseout="hide()">алгоритмом CCD.
Статья о покоординатном спуске в англоязычной Википедии и пара (вот и вот) русскоязычных ссылок.
CCDIKSolver решает задачу инверсной кинематики с помощью алгоритма CCD. CCDIKSolver предназначен для работы с SkinnedMesh, загруженной с помощью MMDLoader, но также может использоваться для стандартной SkinnedMesh.
Пример
var ikSolver;
// Load MMD resources and instantiate CCDIKSolver // загрузка ресурсов MMD и создание экземпляра CCDIKSolver new THREE.MMDLoader().load( 'models/mmd/miku.pmd', function ( mesh ) { ikSolver = new CCDIKSolver( mesh, mesh.geometry.iks ); scene.add( mesh ); } );
function render() { animate(); // update bones (обновление костей) if ( ikSolver !== undefined ) ikSolver.update(); renderer.render( scene, camera ); }
Другие примеры
webgl_loader_mmd webgl_loader_mmd_pose webgl_loader_mmd_audio
Конструктор
CCDIKSolver(
mesh - сетка')" onmouseout="hide()">mesh,
- (элементы) инверсной кинематики')" onmouseout="hide()">iks )
mesh — SkinnedMesh для которой CCDIKSolver решает задачу инверсной кинематики.
iks — An array of Object specifying IK parameter. target, effector, and link-index are index integers in .skeleton.bones. The bones relation should be "links[ n ], links[ n - 1 ], ..., links[ 0 ], effector" in order from parent to child.
● target — целевая (target) кость.
● effector — эффекторная кость.
● links — An array of [page: Object] specifying link bones.
○ index — Link bone.
○ limitation — (optional) Rotation axis. Default is undefined.
○ rotationMin — (optional) Rotation minimum limit. Default is undefined.
○ rotationMax — (optional) Rotation maximum limit. Default is undefined.
○ enabled — значением по умолчанию является true. Дополнительный, необязательный параметр.
● iteration — количество расчетных итераций (шагов).Чем меньше, тем быстрее, но ниже точность. Значение по умолчанию равно 1. Дополнительный, необязательный параметр.
● minAngle — минимальный угол поворота за один шаг. Значением по умолчанию является undefined, т.е. значение неопределено. Дополнительный, необязательный параметр.
● maxAngle — максимальный угол поворота за один шаг. Значением по умолчанию является undefined, т.е. значение неопределено. Дополнительный, необязательный параметр.
Создает новый CCDIKSolver.● target — целевая (target) кость.
● effector — эффекторная кость.
● links — An array of [page: Object] specifying link bones.
○ index — Link bone.
○ limitation — (optional) Rotation axis. Default is undefined.
○ rotationMin — (optional) Rotation minimum limit. Default is undefined.
○ rotationMax — (optional) Rotation maximum limit. Default is undefined.
○ enabled — значением по умолчанию является true. Дополнительный, необязательный параметр.
● iteration — количество расчетных итераций (шагов).Чем меньше, тем быстрее, но ниже точность. Значение по умолчанию равно 1. Дополнительный, необязательный параметр.
● minAngle — минимальный угол поворота за один шаг. Значением по умолчанию является undefined, т.е. значение неопределено. Дополнительный, необязательный параметр.
● maxAngle — максимальный угол поворота за один шаг. Значением по умолчанию является undefined, т.е. значение неопределено. Дополнительный, необязательный параметр.
Свойства
- (элементы) инверсной кинематики')" onmouseout="hide()">.iks
Массив параметров инверсной кинематики, переданный конструктору.SkinnedMesh, переданный конструктору.
mesh - сетка')" onmouseout="hide()">.mesh
Методы
.createHelper( )
Метод возвращает inverse kinematic helper - вспомогательный элемент инверсной
кинематики циклического покоординатного спуска')" onmouseout="hide()">CCDIKHelper. Можно визуализировать кости инверсной кинематики, добавив на сцену вспомогательный элемент.
Метод обновляет кватернион костей с помощью алгоритма CCD.
update - обновить')" onmouseout="hide()">.update( )
Исходники
MMDAnimationHelper
A animation helper for MMD resources.MMDAnimationHelper handles animation of MMD assets loaded by MMDLoader with MMD special features as IK, Grant, and Physics. It uses CCDIKSolver and MMDPhysics inside.
Пример
// Instantiate a helper var helper = new THREE.MMDAnimationHelper();
// Load MMD resources and add to helper new THREE.MMDLoader().loadWithAnimation( 'models/mmd/miku.pmd', 'models/mmd/dance.vmd', function ( mmd ) { helper.add( mmd.mesh, { animation: mmd.animation, physics: true } );
scene.add( mmd.mesh );
new THREE.AudioLoader().load( 'audios/mmd/song.mp3', function ( buffer ) { var listener = new THREE.AudioListener(); var audio = new THREE.Audio( listener ) .setBuffer( buffer ); listener.position.z = 1;
scene.add( audio ); scene.add( listener ); } ); } );
function render() { helper.update( clock.getDelta() ); renderer.render( scene, camera ); }
Другие примеры
webgl_loader_mmd webgl_loader_mmd_pose webgl_loader_mmd_audio
Конструктор
MMDAnimationHelper( params : Object )
params — (optional)
● sync - Whether animation durations of added objects are synched. Default is true.
● afterglow - Default is 0.0.
● resetPhysicsOnLoop - Default is true.
Создает новый MMDAnimationHelper.● sync - Whether animation durations of added objects are synched. Default is true.
● afterglow - Default is 0.0.
● resetPhysicsOnLoop - Default is true.
Свойства
.audio : AudioAn Audio added to helper.
.camera : CameraAn Camera added to helper.
.meshes : ArrayAn array of SkinnedMesh added to helper.
.objects : WeakMapA WeakMap which holds animation stuffs used in helper for objects added to helper. For example, you can access AnimationMixer for an added SkinnedMesh with "helper.objects.get( mesh ).mixer"
.onBeforePhysics : functionAn optional callback that is executed immediately before the physicis calculation for an SkinnedMesh. This function is called with the SkinnedMesh.
Методы
.add ( object : Object3D, params : Object ) : MMDAnimationHelper
object — SkinnedMesh, Camera, or Audio
params — (optional)
● animation - an AnimationClip or an array of AnimationClip set to object. Only for SkinnedMesh and Camera. Default is undefined.
● physics - Only for SkinnedMesh. A flag whether turn on physics. Default is true.
● warmup - Only for SkinnedMesh and physics is true. Physics parameter. Default is 60.
● unitStep - Only for SkinnedMesh and physics is true. Physics parameter. Default is 1 / 65.
● maxStepNum - Only for SkinnedMesh and physics is true. Physics parameter. Default is 3.
● gravity - Only for SkinnedMesh and physics is true. Physics parameter. Default is ( 0, - 9.8 * 10, 0 ).
● delayTime - Only for Audio. Default is 0.0.
Add an SkinnedMesh, Camera, or Audio to helper and setup animation. The anmation durations of added objects are synched. If camera/audio has already been added, it'll be replaced with a new one.● animation - an AnimationClip or an array of AnimationClip set to object. Only for SkinnedMesh and Camera. Default is undefined.
● physics - Only for SkinnedMesh. A flag whether turn on physics. Default is true.
● warmup - Only for SkinnedMesh and physics is true. Physics parameter. Default is 60.
● unitStep - Only for SkinnedMesh and physics is true. Physics parameter. Default is 1 / 65.
● maxStepNum - Only for SkinnedMesh and physics is true. Physics parameter. Default is 3.
● gravity - Only for SkinnedMesh and physics is true. Physics parameter. Default is ( 0, - 9.8 * 10, 0 ).
● delayTime - Only for Audio. Default is 0.0.
.enable ( key : string, enabled : Boolean ) : MMDAnimationHelper
key — Allowed strings are 'animation', 'ik', 'grant', 'physics', and 'cameraAnimation'.
enabled — true is enable, false is disable
Enable/Disable an animation feature.pose ( mesh : SkinnedMesh, vpd : Object, params : Object ) : MMDAnimationHelper
mesh — SkinnedMesh which changes the posing. It doesn't need to be added to helper.
vpd — VPD content obtained by MMDLoader.loadVPD
params — (optional)
● resetPose - значением по умолчанию является true.
● ik - значением по умолчанию является true.
● grant - значением по умолчанию является true.
Changes the posing of SkinnedMesh as VPD content specifies.● resetPose - значением по умолчанию является true.
● ik - значением по умолчанию является true.
● grant - значением по умолчанию является true.
.remove ( object : Object3D ) : MMDAnimationHelper
object — SkinnedMesh, Camera, or Audio
Remove an SkinnedMesh, Camera, or Audio from helper..update ( delta : Nummber ) : MMDAnimationHelper
delta — number in second
Advance mixer time and update the animations of objects added to helper Исходники
MMDPhysics
A Physics handler for MMD resources.MMDPhysics calculates Physics for model loaded by MMDLoader with ammo.js (Bullet-based JavaScript Physics engine).
Пример
var physics;
// Load MMD resources and instantiate MMDPhysics // Load MMD resources and instantiate MMDPhysics new THREE.MMDLoader().load( 'models/mmd/miku.pmd', function ( mesh ) { physics = new THREE.MMDPhysics( mesh ) scene.add( mesh ); } );
function render() { var delta = clock.getDelta(); animate( delta ); // update bones if ( physics !== undefined ) physics.update( delta ); renderer.render( scene, camera ); }
Другие примеры
webgl_loader_mmd webgl_loader_mmd_audio
Конструктор
MMDPhysics( mesh : SkinnedMesh, rigidBodyParams, constraintParams, params )
mesh — SkinnedMesh for which MMDPhysics calculates Physics.
rigidBodyParams — An array of Object specifying Rigid Body parameters.
constraintParams — (optional) An array of Object specifying Constraint parameters.
params — (optional)
● unitStep - Default is 1 / 65.
● maxStepNum - Default is 3.
● gravity - Default is ( 0, - 9.8 * 10, 0 )
Создает новый MMDPhysics.● unitStep - Default is 1 / 65.
● maxStepNum - Default is 3.
● gravity - Default is ( 0, - 9.8 * 10, 0 )
Свойства
.mesh : ArraySkinnedMesh passed to the constructor.
Методы
.createHelper () : MMDPhysicsHelperReturn MMDPhysicsHelper. You can visualize Rigid bodies by adding the helper to scene.
.reset () : CCDIKSolverResets Rigid bodies transorm to current bone's.
.setGravity ( gravity : Vector3 ) : CCDIKSolver
gravity — Direction and volume of gravity.
Set gravity..update ( delta : Number ) : CCDIKSolver
delta — время в секундах.
Advance Physics calculation and updates bones..warmup ( cycles : Integer ) : CCDIKSolver
delta — время в секундах.
Warm up Rigid bodies. Calculates cycles steps.