inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

GUI 컨트롤

dat.gui

438

greenartnw

작성한 질문수 1

0

react에 three.js를 따라하고 있습니다. 그런데 다른건 다 잘 되는데 dat.GUI는 똑같이 따라 하니 안되네요 혹시 다른 방법을 더 추가 해야 할까여

import * as THREE from 'three';
import dat from 'dat.gui';

export default function example() {
	 const scene = new THREE.Scene();
	 const renderer = new THREE.WebGLRenderer({
		 antialias : true
	 });
   renderer.setSize(window.innerWidth, window.innerHeight);
   renderer.setPixelRatio(window.devicePixelRatio>=1 ? 2 : 1);
   document.body.innerHTML="";
   document.body.appendChild(renderer.domElement);

	// Camera
	const camera = new THREE.PerspectiveCamera(
		75,
		window.innerWidth / window.innerHeight,
		0.1,
		1000
	);
	camera.position.y = 1;
	camera.position.z = 5;
	scene.add(camera);

	// Light
	const ambientLight = new THREE.AmbientLight('white', 0.5);
	scene.add(ambientLight);
	
	const directionalLight = new THREE.DirectionalLight('white', 1);
	directionalLight.position.x = 1;
	directionalLight.position.z = 2;
	scene.add(directionalLight);

	// Mesh
	const geometry = new THREE.BoxGeometry(1, 1, 1);
	const material = new THREE.MeshStandardMaterial({
		color: 'seagreen'
	});
	const mesh = new THREE.Mesh(geometry, material);
	scene.add(mesh);

	// Dat GUI
	const gui = new dat.GUI({ name: "My GUI" });
	console.log(gui)
	gui.add(mesh.position, 'y', -5, 5, 0.01).name('큐브 Y');
	gui.add(camera.position, 'x', -10, 10, 0.01).name('카메라 X');
	camera.lookAt(mesh.position);

	// 그리기
	const clock = new THREE.Clock();
	function draw() {
		const time = clock.getElapsedTime();
		mesh.rotation.y = time;
		camera.lookAt(mesh.position);
		renderer.render(scene, camera);
		renderer.setAnimationLoop(draw);
	}

	function setSize() {
		camera.aspect = window.innerWidth / window.innerHeight;
		camera.updateProjectionMatrix();
		renderer.setSize(window.innerWidth, window.innerHeight);
		renderer.render(scene, camera);
	}
	// 이벤트
	window.addEventListener('resize', setSize);
	draw();
}

blender 인터랙티브-웹 three.js

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴이에요. dat.GUI 사용 시 문제가 발생하는 것 같네요. 첫 번째로 확인해야 할 점은 dat.GUI의 버전입니다. 현재 사용하고 계신 버전이 React와 호환되는지 확인해보세요. React와 호환되지 않는다면, React에서 다른 상태 관리 라이브러리를 사용해야 할 수도 있습니다.

두 번째로 확인해야 할 점은 import 구문입니다. dat.GUI를 import할 때, 다음과 같이 변경해 보세요.

import dat from 'dat.gui/build/dat.gui.module';

위와 같이 변경하고 다시 시도해보세요.

만약 이렇게 변경해도 문제가 해결되지 않는다면, 해당 문제에 대한 에러 메시지나 콘솔 로그를 공유해주시면 더 자세한 도움을 드릴 수 있을 것 같아요.

box3.position.x 위치

0

38

1

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

0

80

1

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

0

118

2

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

0

118

0

gltf 포맷 사용

0

243

1

점프 애니메이션 stop

0

127

2

사양에 따른 다른 결과

0

112

1

중복 질문 삭제

0

160

1

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

0

124

1

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

0

101

2

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

0

160

1

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

0

77

0

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

0

138

1

setAnimationLoop 위치가...

0

99

1

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

0

135

1

블렌더 texture paint 시 미러모드

0

163

0

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

0

104

1

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

0

966

2

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

0

289

2

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

0

379

1

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

0

238

1

live server와 localhost:8080

0

345

1

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

0

270

1

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

0

208

1