Three.js
From three.js
Объекты
В этом разделе дается описание различных объектов
Object3D →
Bone - кость, т.е. объект, который может быть соединен с другими объектами в одно целое - скелет
Group - группа объектов
Line - линия
LineLoop - замкнутая линия, т.е. линия, у которой конец и начало соединены
LineSegments - отрезки линий
LOD - Level of Detail - уровень детализации объектов в зависимости от расстояния между объектом и камерой
Points - точки
Skeleton - скелет, т.е. объект, состоящий из нескольких, состыкованных между собой объектов
SkinnedMesh - полигональная сетка, покрывающая скелет (Skeleton) из костей (Bone)
Sprite - спрайт, т.е. плоскость, всегда обращенная к камере, частично прозрачная и не отбрасывающая тень
Bone
Кость (bone) является частью скелета (Skeleton). Скелет, в свою очередь, используется "сеткой, покрытой кожей" (SkinnedMesh). Кости практически одинаковы с пустым Object3D.Пример
var root = new THREE.Bone(); var child = new THREE.Bone();
root.add( child ); child.position.y = 5;
Конструктор
Bone( )Создает новую кость (Bone).
Свойства
Общие свойства смотрите в описании базового класса Object3D..isBone
Используется для проверки, принадлежит ли данный объект или производные от него, к классу Bone. По умолчанию значение равно true.Не нужно его изменять, так как внутри three.js оно используется для оптимизации.
.type
Значение свойства установлено как "Bone". Оно может использоваться для поиска всех объектов класса Bone на сцене.Методы
Общие методы смотрите в описании базового класса Object3D.Исходники
Object3D →
Group
Данный объект (группа) практически идентичен Object3D. Его назначение сделать работу с группой объектов синтаксически яснее.Пример
var geometry = new THREE.BoxBufferGeometry( 1, 1, 1 );
var material = new THREE.MeshBasicMaterial( {color: 0x00ff00} );
var cubeA = new THREE.Mesh( geometry, material );
cubeA.position.set( 100, 100, 0 );
var cubeB = new THREE.Mesh( geometry, material );
cubeA.position.set( -100, -100, 0 );
// create a group and add the two cubes
// These cubes can now be rotated / scaled etc as a group
// создаем группу и добавляем два куба
// Эти кубы теперь можно вращать/масштабировать и т.д. как группу
var group = new THREE.Group();
group.add( cubeA );
group.add( cubeB )
scene.add( group );
Конструктор
Group( )Создает новую группу объектов.
Свойства
Общие свойства смотрите в описании базового класса Object3D..type
Строка 'Group'. Она не должна изменяться.Методы
Общие методы смотрите в описании базового класса Object3D.Исходники
Object3D →
Line
Непрерывная линия.Это почти то же самое, что и LineSegments; единственное различие заключается в том, что оно отображается с помощью gl.LINE_STRIP, а не gl.LINES.
Пример
var material = new THREE.LineBasicMaterial({
color: 0x0000ff
});
var geometry = new THREE.Geometry();
geometry.vertices.push(
new THREE.Vector3( -10, 0, 0 ),
new THREE.Vector3( 0, 10, 0 ),
new THREE.Vector3( 10, 0, 0 )
);
var line = new THREE.Line( geometry, material );
scene.add( line );
Конструктор
Line(
geometry - геометрия, в данном случае
означает геометрический элемент')" onmouseout="hide()">geometry,
material - материал')" onmouseout="hide()">material )
geometry - геометрия, в данном случае
означает геометрический элемент')" onmouseout="hide()">geometry — вершины, представляющие отрезок (отрезки) линии. По умолчанию используется новая BufferGeometry.
material - материал')" onmouseout="hide()">material — материал для линии. По умолчанию используется LineBasicMaterial со случайно выбранным цветом.
Свойства
Общие свойства смотрите в описании базового класса Object3D..isLine
Используется для проверки, принадлежит ли данный объект или производные от него, к классу Line. По умолчанию значение равно true.Не нужно его изменять, так как внутри three.js оно используется для оптимизации.
Вершины, представляющие отрезок (отрезки) линии.
geometry - геометрия, в данном случае
означает геометрический элемент')" onmouseout="hide()">.geometry
Материал для линии.
material - материал')" onmouseout="hide()">.material
Методы
Общие методы смотрите в описании базового класса Object3D.Метод вычисляет массив значений размеров, необходимых для LineDashedMaterial. Для каждой вершины геометрического элемента метод рассчитывает совокупную длину от текущей точки до самого начала линии.
compute line distances - вычислить размеры линии')" onmouseout="hide()">.computeLineDistances( )
.raycast( [page:Raycaster raycaster], [page:Array intersects] )
Метод получает точки пересечения между брошенным лучом и данной линией.
Данный метод будет вызываться методом Raycaster.intersectObject.Метод возвращает клон данного объекта Line и его потомков.
clone - клонировать')" onmouseout="hide()">.clone( )
Исходники
Object3D → Line →
LineLoop
LineLoop это непрерывная линия, начало которой соединено с её концом, т.е. замкнутая линия.Это почти то же самое, что и Line; единственное различие заключается в том, что оно отображается с помощью
и соединяет последнюю вершину с первой')" onmouseout="hide()">gl.LINE_LOOP (вместо gl.LINE_STRIP), которая рисует прямую линию к следующей вершине и присоединяет последнюю вершину обратно к первой.
Конструктор
LineLoop(
geometry - геометрия, в данном случае
означает геометрический элемент')" onmouseout="hide()">geometry,
material - материал')" onmouseout="hide()">material )
geometry - геометрия, в данном случае
означает геометрический элемент')" onmouseout="hide()">geometry — список вершин, представляющих точки замкнутой линии.
material - материал')" onmouseout="hide()">material — материал для линии. По умолчанию используется LineBasicMaterial.
Свойства
Общие свойства смотрите в описании базового класса Line..isLineLoop
Используется для проверки, принадлежит ли данный объект или производные от него, к классу LineLoop. По умолчанию значение равно true.Не нужно его изменять, так как внутри three.js оно используется для оптимизации.
Методы
Общие методы смотрите в описании базового класса Line.Исходники
Object3D → Line →
LineSegments
Цепочка линий, нарисованных между парами вершин.Это почти то же самое, что и Line; единственное различие заключается в том, что оно отображается с помощью gl.LINES, а не gl.LINE_STRIP.
Конструктор
LineSegments(
geometry - геометрия, в данном случае
означает геометрический элемент')" onmouseout="hide()">geometry,
material - материал')" onmouseout="hide()">material )
geometry - геометрия, в данном случае
означает геометрический элемент')" onmouseout="hide()">geometry — пара (или пары) вершин, представляющих каждый отрезок линии.
material - материал')" onmouseout="hide()">material — материал для линии. По умолчанию используется LineBasicMaterial.
Свойства
Общие свойства смотрите в описании базового класса Line..isLineLoop
Используется для проверки, принадлежит ли данный объект или производные от него, к классу LineLoop. По умолчанию значение равно true.Не нужно его изменять, так как внутри three.js оно используется для оптимизации.
Методы
Общие методы смотрите в описании базового класса Line.Исходники
Object3D →
LOD
LOD - это сокращение английских слов level of detail - уровень детализации - показывает полигональные сетки (mesh) с большим или меньшим количеством геометрических элементов в зависимости от расстояния между объектом и камерой.Пример
var lod = new THREE.LOD();Обратите внимание, что LOD переключения между различными уровнями детализации, в цикле визуализации нужно будет вызывать update( camera ). Смотрите подробности в исходном коде этого примера: WebGL / LOD.
// Create spheres with 3 levels of detail and create new LOD levels for them // Создаем сферы с 3 уровнями детализации и создаем новые уровни LOD для них for( var i = 0; i < 3; i++ ) { var geometry = new THREE.IcosahedronBufferGeometry( 10, 3 - i ) var mesh = new THREE.Mesh( geometry, material ); lod.addLevel( mesh, i * 75 ); }
scene.add( lod );
Конструктор
LOD()Создает новый LOD.
Свойства
Общие свойства смотрите в описании базового класса Object3D..levels
Массив объектов уровня.Каждый уровень является объектом с двумя свойствами:
object - объект')" onmouseout="hide()">object - Object3D для отображения на данном уровне.
distance - расстояние на котором будет показываться данный уровень детализации.
Методы
Общие методы смотрите в описании базового класса Object3D..addLevel(
object - объект')" onmouseout="hide()">object, distance )
object - объект')" onmouseout="hide()">object - Object3D для отображения на данном уровне.
distance - расстояние на котором будет показываться данный уровень детализации.
Метод добавляет полигональную сетку (mesh), которая будет отображаться с определенного расстояния и дальше. Как правило, чем дальше находится объект от камеры, тем меньше уровень детализации полигональной сетки.Возвращает клон LOD данного объекта и связанные с ним расстояния до определенных объектов.
clone - клонировать')" onmouseout="hide()">.clone( )
Get a reference to the first [page:Object3D] (mesh) that is greater than supplied distance.
get object for distance - получить объект для расстояния')" onmouseout="hide()">.getObjectForDistance( distance )
.raycast(Получает пересечения между брошенным лучом и данным LOD. Этот метод будет вызываться методом Raycaster.intersectObject.
raycaster - "бросатель" луча, излучатель')" onmouseout="hide()">raycaster, intersects )
сокращ. англ. слов JavaScript Object Notation,
обычно произносится как /ˈdʒeɪsən/ JAY-sən)
— текстовый формат обмена данными,
основанный на JavaScript.')" onmouseout="hide()">.toJSON( meta )
Создает структуру JSON с описанием данного LOD объекта..update(Set the visibility of each level's object based on distance from the camera. This needs to be called in the render loop for levels of detail to be updated dynamically.
camera - камера')" onmouseout="hide()">camera )
Исходники
Object3D →
Mesh
Класс, представляющий объекты на основе треугольной полигональной сетки (polygon mesh). Также выступает в качестве основы для других классов, таких как SkinnedMesh.Пример
var geometry = new THREE.BoxBufferGeometry( 1, 1, 1 );
var material = new THREE.MeshBasicMaterial( { color: 0xffff00 } );
var mesh = new THREE.Mesh( geometry, material );
scene.add( mesh );Конструктор
Mesh(
geometry - геометрия, в данном случае
означает геометрический элемент')" onmouseout="hide()">geometry,
material - материал')" onmouseout="hide()">material )
geometry - геометрия, в данном случае
означает геометрический элемент')" onmouseout="hide()">geometry — экземпляр Geometry или BufferGeometry. Дополнительный, необязательный аргумент, по умолчанию это новая BufferGeometry.
material - материал')" onmouseout="hide()">material — Material для сетки. Дополнительный, необязательный аргумент, по умолчанию это новый MeshBasicMaterial с цветом, выбранным в случайном порядке.
Свойства
Общие свойства смотрите в описании базового класса Object3D..drawMode
Свойство определяет способ построения треугольников полигональной сетки по координатам вершин.
Все возможные значения смотрите в статье о константах режима рисования.
Значением по умолчанию является THREE.TrianglesDrawMode..isMesh
Используется для проверки, принадлежит ли данный объект или производные от него, к классу Mesh. По умолчанию значение равно true.Не нужно его изменять, так как внутри three.js оно используется для оптимизации.
Экземпляр Geometry или BufferGeometry (или классы, производные от них), определяющий структуру объекта.
geometry - геометрия, в данном случае
означает геометрический элемент')" onmouseout="hide()">.geometry
Если возможно, рекомендуется всегда использовать BufferGeometry, как лучшую по производительности.
Экземпляр Material'а, определяющий внешний вид объекта. Значением по умолчанию является MeshBasicMaterial с цветом, выбранным в случайном порядке.
material - материал')" onmouseout="hide()">.material
.morphTargetInfluences
Массив значений весов (обычно в диапазоне 0 - 1), которые определяют степень применения морфинга.
По умолчанию он неопределен, но методом updateMorphTargets сбрасывается в пустой массив..morphTargetDictionary
Словарь целей морфинга на основе свойства morphTarget.name.
A dictionary of morphTargets based on the morphTarget.name property.
По умолчанию он неопределен, но восстанавливается updateMorphTargets.Методы
Общие методы смотрите в описании базового класса Object3D..setDrawMode( )
Метод устанавливает значение свойства drawMode.Возвращает клон данного объекта Mesh и всех его потомков.
clone - клонировать')" onmouseout="hide()">.clone( )
.raycast(Получает пересечения между брошенным лучом и данной сеткой. Этот метод будет вызываться методом Raycaster.intersectObject.
raycaster - "бросатель" луча, излучатель')" onmouseout="hide()">raycaster, intersects )
.updateMorphTargets( )
Updates the morphTargets to have no influence on the object. Resets the morphTargetInfluences and morphTargetDictionary properties
Исходники
Object3D →
Points
Класс для отображения точек. Точки отрисовываются WebGLRenderer'ом при помощи gl.POINTS.Конструктор
Points(
geometry - геометрия, в данном случае
означает геометрический элемент')" onmouseout="hide()">geometry,
material - материал')" onmouseout="hide()">material )
geometry - геометрия, в данном случае
означает геометрический элемент')" onmouseout="hide()">geometry — экземпляр Geometry или BufferGeometry. Дополнительный, необязательный аргумент, по умолчанию это новая BufferGeometry.
material - материал')" onmouseout="hide()">material — Material для Points. Дополнительный, необязательный аргумент, по умолчанию это новый PointsMaterial с цветом, выбранным в случайном порядке.
Свойства
Общие свойства смотрите в описании базового класса Object3D.Экземпляр Geometry или BufferGeometry (или классы, производные от них), определяющий структуру объекта.
geometry - геометрия, в данном случае
означает геометрический элемент')" onmouseout="hide()">.geometry
Если возможно, рекомендуется всегда использовать BufferGeometry, как лучшую по производительности.
.isPoints
Используется для проверки, принадлежит ли данный объект или производные от него, к классу Points. По умолчанию значение равно true.Не нужно его изменять, так как внутри three.js оно используется для оптимизации.
Экземпляр Material'а, определяющий внешний вид объекта. Значением по умолчанию является PointsMaterial с цветом, выбранным в случайном порядке.
material - материал')" onmouseout="hide()">.material
Методы
Общие методы смотрите в описании базового класса Object3D.Возвращает клон данного объекта Points и всех его потомков.
clone - клонировать')" onmouseout="hide()">.clone( )
.raycast(Получает пересечения между брошенным лучом и данным объектом Points. Этот метод будет вызываться методом Raycaster.intersectObject.
raycaster - "бросатель" луча, излучатель')" onmouseout="hide()">raycaster, intersects )
Исходники
Skeleton
Объект Skeleton (скелет), созданный из массива костей (Bone), может использоваться SkinnedMesh (полигональной сеткой, покрывающей скелет). Работает только в среде WebGL.Пример
// Create a simple "arm" (создадим простейшую "руку")Пример использования со стандартной BufferGeometry смотрите на странице с описанием SkinnedMesh.
var bones = [];
var shoulder = new THREE.Bone(); // shoulder - плечо var elbow = new THREE.Bone(); // elbow - локоть var hand = new THREE.Bone(); // hand - рука
shoulder.add( elbow ); elbow.add( hand );
bones.push( shoulder ); bones.push( elbow ); bones.push( hand );
shoulder.position.y = -5; elbow.position.y = 0; hand.position.y = 5;
var armSkeleton = new THREE.Skeleton( bones );
Конструктор
Skeleton( bones, boneInverses )
boneInverses
- массив четырехмерных матриц. Дополнительный, необязательный аргумент.
Создает новый объект Skeleton.Свойства
.bones
Массив костей.
Обратите внимание, что это копия исходного массива, а не ссылка на него, так что можно изменять исходный массив не оказывая влияния на данный..boneInverses
Массив четырехмерных матриц,
который представляет инверсию matrixWorld из отдельных костей..boneMatrices
Буфер массива, содержащий данные костей при использовании текстуры вершин.DataTexture, содержащая данные костей при использовании текстуры вершин.
bone texture - текстура кости')" onmouseout="hide()">.boneTexture
Методы
Возвращает клон данного объекта Skeleton.
clone - клонировать')" onmouseout="hide()">.clone( )
.calculateInverses( )
Генерирует массив boneInverses, если он не предоставлен в конструкторе..pose( )
Возвращает скелет в базовую позу..update( )
Метод обновляет boneMatrices
и boneTexture после изменения костей.
Если скелет используется со SkinnedMesh,
обновление вызывается автоматически WebGLRenderer'ом.Исходники
Object3D → Mesh →
SkinnedMesh
Полигональная сетка (mesh), имеющая в составе "скелет" с "костями", которую теперь можно использовать для анимации вершин геометрии.Пример
... показать
var geometry = new THREE.CylinderGeometry( 5, 5, 5, 5, 15, 5, 30 );
// Create the skin indices and skin weights // создадим индексы скина и веса скина for ( var i = 0; i < geometry.vertices.length; i ++ ) {
// Imaginary functions to calculate the indices and weights // This part will need to be changed depending your skeleton and model var skinIndex = calculateSkinIndex( geometry.vertices, i ); var skinWeight = calculateSkinWeight( geometry.vertices, i );
// Ease between each bone (облегчаем между каждой костью) geometry.skinIndices.push( new THREE.Vector4( skinIndex, skinIndex + 1, 0, 0 ) ); geometry.skinWeights.push( new THREE.Vector4( 1 - skinWeight, skinWeight, 0, 0 ) );
}
var mesh = THREE.SkinnedMesh( geometry, material );
// See example from THREE.Skeleton for the armSkeleton // смотрите пример armSkeleton из описания THREE.Skeleton var rootBone = armSkeleton.bones[ 0 ]; mesh.add( rootBone );
// Bind the skeleton to the mesh // связываем скелет с сеткой mesh.bind( armSkeleton );
// Move the bones and manipulate the model // перемещаем кости и управляем моделью armSkeleton.bones[ 0 ].rotation.x = -0.1; armSkeleton.bones[ 1 ].rotation.x = 0.2;
Конструктор
SkinnedMesh(
geometry - геометрия, в данном случае
означает геометрический элемент')" onmouseout="hide()">geometry,
material - материал')" onmouseout="hide()">material )
geometry - геометрия, в данном случае
означает геометрический элемент')" onmouseout="hide()">geometry — экземпляр Geometry или BufferGeometry (рекомендуется). Его свойства skinIndices и skinWeights должны быть установлены как true.
material - материал')" onmouseout="hide()">material — экземпляр Material'а. Дополнительный, необязательный аргумент, по умолчанию это новый MeshBasicMaterial.
Свойства
Общие свойства смотрите в описании базового класса Mesh..bindMode
Значением может быть либо "attached" либо "detached".
Значение "attached" используется свойством наследуется от Object3D')" onmouseout="hide()">SkinnedMesh.matrixWorld для основных изменений матрицы костей. Значение "detached" используется SkinnedMesh.bindMatrix. Значением по умолчанию является "attached".
Основная матрица, используемая для связанных трансформаций кости.
bind matrix - матрица привязки')" onmouseout="hide()">.bindMatrix
Основная матрица, используемая для сброса связанных трансформаций кости.
bind matrix inverse - инверсия матрицы привязки')" onmouseout="hide()">.bindMatrixInverse
.isSkinnedMesh
Используется для проверки, принадлежит ли данный объект или производные от него, к классу SkinnedMesh. По умолчанию значение равно true.Не нужно его изменять, так как внутри three.js оно используется для оптимизации.
Скелет, созданный из костей - геометрических элементов и переданный в конструктор.
skeleton - скелет')" onmouseout="hide()">.skeleton
Методы
Общие методы смотрите в описании базового класса Mesh..bind(
skeleton - скелет')" onmouseout="hide()">skeleton,
bind matrix - матрица привязки')" onmouseout="hide()">bindMatrix )
skeleton - скелет')" onmouseout="hide()">skeleton - скелет созданный в виде древовидной структуры, собранной из костей.
bind matrix - матрица привязки')" onmouseout="hide()">bindMatrix - четырехмерная матрица, представляющая базовую трансформацию скелета.
Возвращает клон данного объекта SkinnedMesh и всех его потомков.
clone - клонировать')" onmouseout="hide()">.clone( )
.normalizeSkinWeights( )
Метод нормализует векторы Geometry.skinWeights. Не работает с BufferGeometry..pose( )
Данный метод устанавливает полигональную сетку в исходную позу (сбрасывает позицию).
This method sets the skinned mesh in the rest pose (resets the pose)..updateMatrixWorld( force )Метод обновляет MatrixWorld.
.initBones( )
Создает массив из иерархических объектов костей из внутренней геометрии.
Creates an array of hierarchical bones objects from the internal geometry.
Исходники
Object3D →
Sprite
Спрайт это плоскость на трехмерной сцене, которая всегда стоит перед камерой.Спрайты не отбрасывают тени, так что установка castShadow = true не даст никакого эффекта.
Пример
var spriteMap = new THREE.TextureLoader().load( "sprite.png" );
var spriteMaterial = new THREE.SpriteMaterial( { map: spriteMap, color: 0xffffff } );
var sprite = new THREE.Sprite( spriteMaterial );
scene.add( sprite );
Конструктор
Sprite( material )
material — экземпляр Material (дополнительный, необязательный аргумент).
Создает новый объект Sprite с указанным материалом material.Свойства
Общие свойства смотрите в описании базового класса Object3D..isSprite
Используется для проверки, принадлежит ли данный объект или производные от него, к классу Sprite. По умолчанию значение равно true.Не нужно его изменять, так как внутри three.js оно используется для оптимизации.
Экземпляр SpriteMaterial'а, определяющий внешний вид объекта. Значением по умолчанию является белый SpriteMaterial.
material - материал')" onmouseout="hide()">.material
Опорная точка спрайта и точка, вокруг которой вращается спрайт. Значение (0.5, 0.5) соответствует средней (центральной) точке спрайта. Значение (0, 0) соответствует нижнему левому углу спрайта. Значение по умолчанию равно (0.5, 0.5).
center - центр')" onmouseout="hide()">.center
Методы
Общие методы смотрите в описании базового класса Object3D.Возвращает клон данного объекта Sprite и всех его потомков.
clone - клонировать')" onmouseout="hide()">.clone( )
Метод копирует в данный спрайт свойства спрайта, переданного в аргументе sprite.
copy - копировать')" onmouseout="hide()">.copy(
sprite - спрайт')" onmouseout="hide()">sprite )
.raycast(Получает пересечения между брошенным лучом и данным спрайтом. Этот метод будет вызываться методом Raycaster.intersectObject.
raycaster - "бросатель" луча, излучатель')" onmouseout="hide()">raycaster, intersects )