Three.js에서 WebGL(1)
3762 단어 three.js
다운로드
three.js의 'download'에서 zip 파일 세트 압축 해제
우선
- build/three.min.js... three.js 메인
- examples/js/libs/tween.min.js ... 애니메이션 용
- examples/js/controls/TrackballControls.js ... 마우스 컨트롤 용
를 만지다. three.js의 초기화 방법은
three.js webgl
당 검색하면 나오는 샘플이 많이 나오므로 생략샘플
200 가량의 스크립트로 만들었습니다. 놀라운
three.js
이하, 조금 빠진 부분
마우스로 시점 변경
‘TrackControls.js’의 THREE.TrackballControls 시작
controls = new THREE.TrackballControls(camera, renderer.domElement);
controls.rotateSpeed = 0.5;
controls.minDistance = 500;
controls.maxDistance = 6000;
controls.noRotate = false; //trueで回転操作を不可にする
controls.addEventListener('change', render);
이미지 로드
ImageUtils.loadTexture로 이미지를 로드하고 THREE.MeshBasicMaterial로 머티리얼화하고 THREE.PlaneGeometry로 평면을 생성하고 THREE.Mesh로 이미지를 평면에 붙여넣기
var texture = new THREE.ImageUtils.loadTexture('sample.png');
var material = new THREE.MeshBasicMaterial({ map: texture });
material.side = THREE.DoubleSide; // 裏も見えるようにする
var geometry = new THREE.PlaneGeometry(300, 300);
object = new THREE.Mesh(geometry, material);
시작시 중심으로 애니메이션
‘tween.js’를 사용한다. before와 after의 위치나 관점을 사용하여 다음과 같이 쓸 뿐. 정말 편한 친
// beforeの座標
object.position.x = Math.random() * 4000 - 2000;
object.position.y = Math.random() * 4000 - 2000;
object.position.z = Math.random() * 4000 - 2000;
// afterの座標
target = new THREE.Object3D();
target.position.x = 0;
target.position.y = 0;
target.position.z = 0;
// 変換
new TWEEN.Tween(object.position)
.to({ x: target.position.x, y: target.position.y, z: target.position.z }, Math.random() * duration + duration)
.easing(TWEEN.Easing.Exponential.InOut)
.start();
이미지와 마우스의 충돌 판정
참고: h tp // w w. 요모츠. 네 t/wp/? p=600
충돌 판정은 템플릿이 있는 모양
// var objectsにobjectの配列が入る
var vector = new THREE.Vector3((event.clientX / window.innerWidth) * 2 - 1, -(event.clientY / window.innerHeight) * 2 + 1, 0.5);
projector.unprojectVector(vector, camera);
var raycaster = new THREE.Raycaster(camera.position, vector.sub(camera.position).normalize());
var intersects = raycaster.intersectObjects(objects);
if (intersects.length > 0) {
// ... intersects[0]に衝突した先頭のobjectが入る
}
판정 후 화면 확대
상기 충돌 판정 후에
tween.js
의 기능을 이용한 다음과 같은 함수를 준비한다.
// obj:選択されたオブジェクト, e:マウスin時にtrue,mouseout時にfalse
function selectObject(obj, e) {
if (obj) {
if (e === true) {
// サイズを大きくする
new TWEEN.Tween(interesectedObject.scale)
.to({ x: 1.4, y: 1.4, z: 1.4 }, 60)
.start();
} else {
// サイズを元に戻す
new TWEEN.Tween(interesectedObject.scale)
.to({ x: 1, y: 1, z: 1 }, 60)
.start();
}
}
}
Reference
이 문제에 관하여(Three.js에서 WebGL(1)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/odorumaharaja/items/d92f575b855a3fca0f42텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)