Three.js

From three.js

Объекты

В этом разделе дается описание различных объектов
Bone - кость, т.е. объект, который может быть соединен с другими объектами в одно целое - скелет
Group - группа объектов
Line - линия
LineLoop - замкнутая линия, т.е. линия, у которой конец и начало соединены
LineSegments - отрезки линий
LOD - Level of Detail - уровень детализации объектов в зависимости от расстояния между объектом и камерой
Points - точки
Skeleton - скелет, т.е. объект, состоящий из нескольких, состыкованных между собой объектов
SkinnedMesh - полигональная сетка, покрывающая скелет (Skeleton) из костей (Bone)
Sprite - спрайт, т.е. плоскость, всегда обращенная к камере, частично прозрачная и не отбрасывающая тень
Object3D →

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.


compute line distances - вычислить размеры линии')" onmouseout="hide()">.computeLineDistances
( )
Метод вычисляет массив значений размеров, необходимых для LineDashedMaterial. Для каждой вершины геометрического элемента метод рассчитывает совокупную длину от текущей точки до самого начала линии.

.raycast( [page:Raycaster raycaster], [page:Array intersects] )
Метод получает точки пересечения между брошенным лучом и данной линией. Данный метод будет вызываться методом Raycaster.intersectObject.


clone - клонировать')" onmouseout="hide()">.clone
( )
Метод возвращает клон данного объекта Line и его потомков.

Исходники



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();
// 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 переключения между различными уровнями детализации, в цикле визуализации нужно будет вызывать update( camera ). Смотрите подробности в исходном коде этого примера: WebGL / 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), которая будет отображаться с определенного расстояния и дальше. Как правило, чем дальше находится объект от камеры, тем меньше уровень детализации полигональной сетки.


clone - клонировать')" onmouseout="hide()">.clone
( )
Возвращает клон LOD данного объекта и связанные с ним расстояния до определенных объектов.


get object for distance - получить объект для расстояния')" onmouseout="hide()">.getObjectForDistance
( distance )
Get a reference to the first [page:Object3D] (mesh) that is greater than supplied distance.

.raycast( 
raycaster - "бросатель" луча, излучатель')" onmouseout="hide()">raycaster
, intersects )
Получает пересечения между брошенным лучом и данным LOD. Этот метод будет вызываться методом Raycaster.intersectObject.


сокращ. англ. слов JavaScript Object Notation,
обычно произносится как /ˈdʒeɪsən/ JAY-sən)
— текстовый формат обмена данными,
основанный на JavaScript.')" onmouseout="hide()">.toJSON
( meta )
Создает структуру JSON с описанием данного LOD объекта.

.update( 
camera - камера')" onmouseout="hide()">camera
)
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.

Исходники



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 - геометрия, в данном случае
означает геометрический элемент')" onmouseout="hide()">.geometry
Экземпляр Geometry или BufferGeometry (или классы, производные от них), определяющий структуру объекта.
Если возможно, рекомендуется всегда использовать BufferGeometry, как лучшую по производительности.


material - материал')" onmouseout="hide()">.material
Экземпляр Material'а, определяющий внешний вид объекта. Значением по умолчанию является MeshBasicMaterial с цветом, выбранным в случайном порядке.

.morphTargetInfluences
Массив значений весов (обычно в диапазоне 0 - 1), которые определяют степень применения морфинга. По умолчанию он неопределен, но методом updateMorphTargets сбрасывается в пустой массив.

.morphTargetDictionary
Словарь целей морфинга на основе свойства morphTarget.name. A dictionary of morphTargets based on the morphTarget.name property. По умолчанию он неопределен, но восстанавливается updateMorphTargets.

Методы

Общие методы смотрите в описании базового класса Object3D.

.setDrawMode( )
Метод устанавливает значение свойства drawMode.


clone - клонировать')" onmouseout="hide()">.clone
( )
Возвращает клон данного объекта Mesh и всех его потомков.

.raycast( 
raycaster - "бросатель" луча, излучатель')" onmouseout="hide()">raycaster
, intersects )
Получает пересечения между брошенным лучом и данной сеткой. Этот метод будет вызываться методом Raycaster.intersectObject.

.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 - геометрия, в данном случае
означает геометрический элемент')" onmouseout="hide()">.geometry
Экземпляр Geometry или BufferGeometry (или классы, производные от них), определяющий структуру объекта.
Если возможно, рекомендуется всегда использовать BufferGeometry, как лучшую по производительности.

.isPoints
Используется для проверки, принадлежит ли данный объект или производные от него, к классу Points. По умолчанию значение равно true.
Не нужно его изменять, так как внутри three.js оно используется для оптимизации.


material - материал')" onmouseout="hide()">.material
Экземпляр Material'а, определяющий внешний вид объекта. Значением по умолчанию является PointsMaterial с цветом, выбранным в случайном порядке.

Методы

Общие методы смотрите в описании базового класса Object3D.


clone - клонировать')" onmouseout="hide()">.clone
( )
Возвращает клон данного объекта Points и всех его потомков.

.raycast( 
raycaster - "бросатель" луча, излучатель')" onmouseout="hide()">raycaster
, intersects )
Получает пересечения между брошенным лучом и данным объектом Points. Этот метод будет вызываться методом Raycaster.intersectObject.

Исходники



Skeleton

Объект Skeleton (скелет), созданный из массива костей (Bone), может использоваться SkinnedMesh (полигональной сеткой, покрывающей скелет). Работает только в среде WebGL.

Пример

// Create a simple "arm" (создадим простейшую "руку")
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 );
Пример использования со стандартной BufferGeometry смотрите на странице с описанием SkinnedMesh.

Конструктор

Skeleton( bones, boneInverses )
bones - массив костей. Значением по умолчанию является пустой массив.
boneInverses - массив четырехмерных матриц. Дополнительный, необязательный аргумент.
Создает новый объект Skeleton.

Свойства


.bones
Массив костей. Обратите внимание, что это копия исходного массива, а не ссылка на него, так что можно изменять исходный массив не оказывая влияния на данный.

.boneInverses
Массив четырехмерных матриц, который представляет инверсию matrixWorld из отдельных костей.

.boneMatrices
Буфер массива, содержащий данные костей при использовании текстуры вершин.


bone texture - текстура кости')" onmouseout="hide()">.boneTexture
DataTexture, содержащая данные костей при использовании текстуры вершин.

Методы



clone - клонировать')" onmouseout="hide()">.clone
( )
Возвращает клон данного объекта Skeleton.

.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
- четырехмерная матрица, представляющая базовую трансформацию скелета.
Увязывает скелет с полигональной сеткой, покрывающей скелет. The bindMatrix gets saved to .bindMatrix property and the .bindMatrixInverse gets calculated. Данный метод вызывается в конструкторе автоматически, а скелет создается из костей геометрии, переданных в конструктор. This is called automatically in the constructor, and the skeleton is created from the bones of the Geometry passed in the constructor.


clone - клонировать')" onmouseout="hide()">.clone
( )
Возвращает клон данного объекта SkinnedMesh и всех его потомков.

.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 оно используется для оптимизации.


material - материал')" onmouseout="hide()">.material
Экземпляр SpriteMaterial'а, определяющий внешний вид объекта. Значением по умолчанию является белый SpriteMaterial.


center - центр')" onmouseout="hide()">.center
Опорная точка спрайта и точка, вокруг которой вращается спрайт. Значение (0.5, 0.5) соответствует средней (центральной) точке спрайта. Значение (0, 0) соответствует нижнему левому углу спрайта. Значение по умолчанию равно (0.5, 0.5).

Методы

Общие методы смотрите в описании базового класса Object3D.


clone - клонировать')" onmouseout="hide()">.clone
( )
Возвращает клон данного объекта Sprite и всех его потомков.


copy - копировать')" onmouseout="hide()">.copy
(
sprite - спрайт')" onmouseout="hide()">sprite
)
Метод копирует в данный спрайт свойства спрайта, переданного в аргументе sprite.

.raycast( 
raycaster - "бросатель" луча, излучатель')" onmouseout="hide()">raycaster
, intersects )
Получает пересечения между брошенным лучом и данным спрайтом. Этот метод будет вызываться методом Raycaster.intersectObject.

Исходники