3D STUDIO VIEWPORT · r186

에셋 상세 설명
손잡이 트리거와 노즐이 있는 분무병입니다. AssetKit이 만든 자체 모델이며 mininter-free로 제공합니다.
이 에셋을 만들 때 쓰는 프롬프트
손잡이 트리거가 달린 분무병. 병, 노즐, 트리거, 빨대를 구분한다. 반투명 플라스틱과 유색 노즐. 실물 분무기 크기. glTF Binary, Y-up, 미터 단위. 폴리곤을 줄이지 않은 하이 모델을 낸다.
three.js r186 코드
import * as THREE from "three";
import { GLTFLoader } from "three/addons/loaders/GLTFLoader.js";
import { OrbitControls } from "three/addons/controls/OrbitControls.js";
import { RoomEnvironment } from "three/addons/environments/RoomEnvironment.js";
const glbUrl = "https://assetkit-cdn.min-inter.co.kr/originals/gen_spray-bottle_trigger_v1/v1/download/gen_spray-bottle_trigger_v1.glb";
const renderer = new THREE.WebGLRenderer({ antialias: true });
renderer.outputColorSpace = THREE.SRGBColorSpace;
renderer.toneMapping = THREE.NeutralToneMapping;
renderer.toneMappingExposure = 1;
renderer.shadowMap.enabled = true;
renderer.shadowMap.type = THREE.PCFSoftShadowMap;
renderer.setPixelRatio(Math.min(window.devicePixelRatio || 1, 2));
document.body.append(renderer.domElement);
const scene = new THREE.Scene();
const pmrem = new THREE.PMREMGenerator(renderer);
scene.environment = pmrem.fromScene(new RoomEnvironment(), 0.04).texture;
const camera = new THREE.PerspectiveCamera(38, window.innerWidth / window.innerHeight, 0.01, 200);
camera.position.set(1.6, 1.1, 2.2);
const controls = new OrbitControls(camera, renderer.domElement);
controls.target.set(0, 0.4, 0);
const key = new THREE.DirectionalLight(0xfffaf0, 2.2);
key.position.set(2.8, 4.2, 2.6);
key.castShadow = true;
scene.add(key);
const fill = new THREE.DirectionalLight(0x90a8ff, 0.85);
fill.position.set(-3, 2, 1.5);
scene.add(fill);
const rim = new THREE.DirectionalLight(0xc4b5fd, 1.15);
rim.position.set(0, 2.4, -3.2);
scene.add(rim);
const loader = new GLTFLoader();
loader.setCrossOrigin("anonymous");
loader.load(glbUrl, (gltf) => {
scene.add(gltf.scene);
});
function resize() {
camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix();
renderer.setSize(window.innerWidth, window.innerHeight);
}
resize();
window.addEventListener("resize", resize);
renderer.setAnimationLoop(() => {
controls.update();
renderer.render(scene, camera);
});
함께 쓰기 좋은 연관 에셋
동일한 프로젝트 씬에 조합하기 좋은 추천 에셋입니다.