inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

Three.js로 시작하는 3D 인터랙티브 웹

여러가지 Geometry 살펴보기

PlaneGeometry 브라우저 화면 크기에 맞게 셋팅하는 법

520

안태민

작성한 질문수 3

0

PlaneGeometry 브라우저 화면 크기에 맞게 셋팅하는 법이 있을까요? width, height를 계산해서 넣어야하는데 계산식이 어떻게 되는지 모르겠네요...

OrthographicCamera를 사용 중입니다!

답변 주시면 감사하겠습니다!

 

 

blender 인터랙티브-웹 three.js

답변 2

0

1분코딩

아래처럼 세팅해 보세요!

const aspect = window.innerWidth / window.innerHeight;
const width = window.innerWidth;
const height = window.innerHeight;
const camera = new THREE.OrthographicCamera(
	-width / 2,
	width / 2,
	height / 2,
	-height / 2,
	1,
	1000
);
camera.position.z = 10;
camera.updateProjectionMatrix();
scene.add(camera);

// Mesh
const geometry = new THREE.PlaneGeometry(width, height);
const material = new THREE.MeshBasicMaterial({ color: 0xffffff });
const plane = new THREE.Mesh(geometry, material);
scene.add(plane);

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴이에요. PlaneGeometry를 브라우저 화면 크기에 맞게 셋팅하는 방법에 대해 알려드릴게요.

일반적으로 Three.js에서는 브라우저의 width와 height를 기준으로 삼아 카메라와 조명 등을 설정합니다. OrthographicCamera를 사용 중이라면 아래와 같은 방법을 사용하면 됩니다.

우선, 브라우저의 width와 height 값을 변수에 저장해야 합니다. 예를 들어, 다음과 같이 할 수 있습니다.

const width = window.innerWidth;
const height = window.innerHeight;

그리고 해당 변수를 사용하여 카메라와 렌더러를 적절하게 설정할 수 있습니다. 아래는 예시 코드입니다.

const camera = new THREE.OrthographicCamera(
  width / -2,
  width / 2,
  height / 2,
  height / -2,
  1,
  1000
);

const renderer = new THREE.WebGLRenderer();
renderer.setSize(width, height);
document.body.appendChild(renderer.domElement);

위 코드는 카메라의 좌표를 브라우저의 width와 height를 기준으로 설정하고, 렌더러의 크기도 이에 맞게 설정하는 예시입니다. 이렇게 하면 PlaneGeometry의 크기도 자동으로 브라우저 화면 크기에 맞게 조절됩니다.

이 방법을 사용하면 PlaneGeometry의 크기를 동적으로 조절할 수 있습니다. 하지만 주의할 점은 브라우저의 크기가 변경될 때마다 해당 코드를 실행해야 한다는 점입니다.

만약 크기 변경에 따른 리사이즈 이벤트를 처리하고 싶다면 window.addEventListener('resize', function() { ... });를 사용하여 리사이즈 이벤트를 감지하고 관련 코드를 넣어주면 됩니다.

위 코드를 참고하여 원하는대로 PlaneGeometry를 브라우저 화면 크기에 맞게 설정하시면 됩니다. 어려운 점이 있으시면 더 자세한 도움을 드릴게요. 이상입니다. 좋은 하루 되세요!

box3.position.x 위치

0

39

1

리액트/next.js와 같이 사용하는 강의 계획은 없으신가요?

0

82

1

소스코드 파일이 강의랑 같나요?

0

122

2

materials 배열에 있는 top, bottom ... 들에 대해서

0

119

0

gltf 포맷 사용

0

243

1

점프 애니메이션 stop

0

128

2

사양에 따른 다른 결과

0

113

1

중복 질문 삭제

0

161

1

혹시 이 빛의 범위를 조절할 수 있는 방법이 있나요?

0

124

1

gltf.scene.children 이 없는데도 모델이 화면에 떠요

0

105

2

GLF파일 export한 후에 three.js에서 렌더링 된 모델에는 텍스처 적용이 안되어있습니다..!

0

163

1

일반 유리, 강화 유리 강의에서 Glass 객체의 position X를 -1, 1로 설정한 이유를 모르겠어요

0

77

0

그림자가 다르게 표현됩니다

0

138

1

setAnimationLoop 위치가...

0

101

1

얼굴 그릴 때 붓이 깔끔하게 칠해지지 않고 얼룩덜룩해요

0

136

1

블렌더 texture paint 시 미러모드

0

164

0

DragControls의 인자값을 바꾸지 않았는데 에러가 안떠요!

0

104

1

blender 에서 색칠하기 편 Texter paint slot추가없음

0

971

2

fin 버전도 그냥 실행이 안돼요

0

291

2

자바스크립트 실행이 안되는 것 같아요

0

381

1

모니터 해상도에 따라 mesh의 크기가 변할 수 있나요?

0

238

1

live server와 localhost:8080

0

348

1

material에 canvas 를 texture 로 넣는방법이 궁금해요

0

271

1

모바일 조이스틱은 어떻게 만들 수 있을까요?

0

211

1