경로 따라 가기
4127 단어 그래픽스
원리
1. 경 로 는 필수 대상 에 따라 이동 물체 와 경로
회전 방향 은 경로 에 의 해 제약 을 받는다.
3. 물체 의 회전 방향 이 경로 의 제약 을 받 으 려 면 두 가지 실현 방식 이 있다.
4. 소프트 회전 을 실현 하 는 사고방식 은 두 가지 가 있다.
5. 미리 부 드 러 운 가운데 물체 가 따 르 는 경 로 는 이미 수정 되 었 기 때문에 그의 이동 궤적 도 최초의 경로 와 일치 하지 않 을 것 이다.
6. 실시 간 으로 원활 하면 물체 의 회전 속성 과 위치 속성 을 분리 할 수 있다. 그림 과 같다.
2. 예시: 실시 간 으로 원활 한 방식 으로 경 로 를 따라 갑 니 다.
이 예 는 three. js 기초 가 필요 합 니 다. three. js 부분 에 대해 저 는 간단 한 개술 만 하 겠 습 니 다.
1. 장면 구축:
// html canvas
const canvas = document.querySelector('#c');
const width = canvas.clientWidth;
const height = canvas.clientHeight;
//
const renderer = new THREE.WebGLRenderer({canvas});
renderer.setSize(width, height, false);
//
const fov = 45;
const aspect = width / height;
const near = 0.01;
const far = 10;
const camera = new THREE.PerspectiveCamera(fov, aspect, near, far);
camera.position.set(0, 2, 0);
camera.updateProjectionMatrix();
//
const scene = new THREE.Scene();
2. 경로 그리 기
let curve;
let curveObject;
{
const points = [
[0.5,0,0.5],
[-0.5,0,0.5],
[-0.5,0,-0.5],
];
curve = new THREE.CatmullRomCurve3(
points.map((p, ndx) => {
return (new THREE.Vector3()).set(...p);
}),
true,
'catmullrom',
0.01
);
{
const points = curve.getPoints(6);
const geometry = new THREE.BufferGeometry().setFromPoints(points);
const material = new THREE.LineBasicMaterial({color: 0xff0000});
curveObject = new THREE.Line(geometry, material);
scene.add(curveObject);
};
}
3. 운동 물 체 를 만든다.먼저 간단 한 box 로 자동 차 를 표시 합 니 다.비행기 라면 모형 을 가 져 와 야 합 니 다.먼저 요점 을 말 하 다.
let car;
{
const geometry =new THREE.BoxBufferGeometry(.1,.1,.2);
const material = new THREE.MeshBasicMaterial( {color: 0xcccccc} );
car = new THREE.Mesh( geometry, material );
scene.add(car);
}
4. 애니메이션 경로 따라 가기
//
const carPosition = new THREE.Vector3();
//
const carTarget = new THREE.Vector3();
function render(time) {
//
let distance = time*0.0002; // convert to seconds
{
//
const targetOffset = 0.1;
// 。getPointAt 。
curve.getPointAt(distance % 1, carPosition);
//
curve.getPointAt((distance + targetOffset) % 1, carTarget);
//
car.position.copy(carPosition);
//
car.lookAt(carTarget);
//
//car.position.lerpVectors(carPosition, carTarget, 0.5);
}
renderer.render(scene, camera);
requestAnimationFrame(render);
}
requestAnimationFrame(render);
주: {} 패키지 코드 의 작성 법 은 let const 명령 의 블록 급 역할 영역 과 관련 이 있 습 니 다. 이렇게 하면 변수 가 상층 대상 의 네 임 스페이스 를 오염 시 키 는 것 을 피 할 수 있 습 니 다.
인 스 턴 스 효과 데모:http://www.yxyy.name/funk/도로
인 스 턴 스 원본 파일:https://github.com/buglas/fun... > 경로 따라 가기. html
참조 사이트 주소:https://threejsfundamentals.o...
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
📘 Direct3D Tutorial3Direct3D 11은 정점 셰이더, 지오메트리 셰이더, 픽셀 셰이더를 지원한다. 정점 셰이더는 정점을 입력으로 받아 정점 버퍼를 통해 GPU로 전달되는 모든 정점에 대해 한 번씩 실행된다. 지오메트리 셰이더는 점,...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.