// получаем мировую матрицу родительского объекта
var m = E.uid[obj.eparent].mWorld.clone();
// делаем параллельный перенос
m.multiply(new THREE.Matrix4().setPosition(obj.pos));
// поворачиваем
m.multiply(new THREE.Matrix4().makeRotationFromQuaternion(obj.ang));
// устанавливаем опорную точку
m.multiply(new THREE.Matrix4().setPosition(obj.basis));
// сохраняем трансформированную матрицу объекта для потомка
obj.mWorld = m.clone();
// масштабируем
m.scale(obj.escale);
// сбрасываем
obj.matrix.identity();
// применяем трансформированную матрицу к объекту
obj.applyMatrix(m.clone());
var sw = 0;
var ms = new Date().getTime();
var mslast = new Date().getTime();
var mscnt = 0;
var dt = new Date(mscnt);
timeLoop();
function timeLoop(){
if(sw){
dt = new Date(mscnt);
ms = new Date().getTime();
mscnt += (ms - mslast);
mslast = ms;
console.log(getDateTimer() ); // для примера
}
setTimeout(timeLoop, 1000);
}
function getDateTimer(){ // получить текущее время с момента запуска
return dt.getUTCHours() + ':' + dt.getUTCMinutes() + ':' + dt.getSeconds() ;
}
function playTimer( beginSec){ // запустить (параметр с какой секунды)
if(beginSec !== undefined) mscnt = beginSec*1000;
sw = 1;
}
function pauseTimer(){ // приостановить
sw = 0;
}
// запускаем таймер со 150 секунды (2:30) ------------------------------------------
playTimer(150);
new THREE.SphereGeometry( 200, 50, 50);
otherCamera = new THREE.PerspectiveCamera( fov, width / height, near, far );
её необходимо направить прямо на объект.var otherScene = new THREE.Scene();
otherScene.add(objAlwaysOnTop);
enderer.clear(); // отчищаем все буферы
renderer.render(mainScene, camera); // рендерим главную сцену
renderer.clear(false, true, false); // отчищаем только буфер глубины
renderer.render(otherScene, otherCamera);// рендерим статичную сцену
Все!var texture = new THREE.ImageUtils.loadTexture( 'images/pic.jpg' );
texture.wrapS = texture.wrapT = THREE.RepeatWrapping;
texture.repeat.set( 0.5, 0.5 );
var spriteMaterial = new THREE.SpriteMaterial( {map: texture, useScreenCoordinates: true, alignment: THREE.SpriteAlignment.topLeft } );
sprite = new THREE.Sprite( spriteMaterial );
sprite.scale.set(100,100,1.0);
sprite.position.set( 0, 0, -1 );
mainScene.add( sprite );
тут как раз используется то
geomLightCone = new THREE.CylinderGeometry( 0, 30, 100, 20, 4 );
material = new THREE.MeshBasicMaterial( {
color: 0xFFFF00,
opacity: 0.5,
visible: true} );
meshLight = new THREE.Mesh(geomLightCone, material);
scene.add(meshLight);
scene.add(meshLight);
projectorMesh.add(meshLight);
var v1 = this.camera.position.clone();
var v2 = Gizmo.position.clone();
var len = v1.sub(v2).length();
var v = new THREE.Vector3(1,1,1);
v.multiplyScalar(len/1039); // 1039 - расстояние от камеры до точки просмотра
Gizmo.applyMatrix(obj.mLocal.clone().scale(v));
var cameraPos = this.world.camera.position.clone();
var gizmoPos = E.select.mLocal.getPosition().clone();
cameraPos.sub( ( cameraPos.clone().sub( gizmoPos ) ).normalize().multiplyScalar( 1000 ) );
( cameraPos.clone().sub( gizmoPos ) ).normalize()
.multiplyScalar( 1000 ) // это кстати удаление Gizmo от камеры
cameraPos.sub( ... );
var v1 = this.camera.position.clone();
var v2 = this.orbitControl.target.clone();
var len = v1.sub(v2).length();
var v = new THREE.Vector3(1,1,1);
v.multiplyScalar(len/1039); // 1039 - расстояние от камеры до точки просмотра
Gizmo.applyMatrix(obj.mLocal.clone().scale(v));