


공간정보시스템 / 3차원 시각화 / 딥러닝 기반 기술 연구소 @지오서비스(GEOSERVICE)


먼저 다음처럼 drei의 shaderMaterial를 이용해 GLSL로 재질을 만들 수 있습니다.
import { shaderMaterial } from '@react-three/drei'
const WaveShaderMaterial = shaderMaterial(
{
uColor: new THREE.Color(1, 0, 0)
},
/* glsl */`
varying vec2 vUv;
void main() {
vUv = uv;
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
}
`,
/* glsl */`
uniform vec3 uColor;
varying vec2 vUv;
void main() {
gl_FragColor = vec4(vUv.y * uColor, 1.0);
}
`
)
리엑트는 선언형 프로그래밍(?) 방식을 권장하므로 위에서 만든 WaveShaderMaterial을 Tag처럼 선언해서 사용할 수 있도록 해야 합니다. 이때 R3F의 extend가 사용됩니다.
import { Canvas, extend } from '@react-three/fiber'
extend({ WaveShaderMaterial })
실제 사용은 다음과 같습니다.
const MyCanvas = () => {
return (
<Canvas>
<pointLight position={[10,10,10]} />
<mesh>
<planeGeometry args={[5,5]} />
<waveShaderMaterial uColor={"white"} />
</mesh>
</Canvas>
)
}
function App() {
return (
<MyCanvas />
)
}
결과는 다음과 같습니다.

아래와 같은 N-Gon은 어떻게 Quad로 만들까 …

아래처럼 …

Topology 흐름이 이상하다 싶지만 위 모델의 상단 부분을 보면 그런 말 못함.. 일부만 보면 트집을 잡을 꺼리가 보이지만 전체를 보면 트집 잡을 꺼리가 아님.. 아.. 블렌더로 인생을 배우네..
“하루에 배우는 리엑트 기본” 중 아래 15개의 영상이 리엑트의 기본 내용을 정리한 것입니다. 전체 시간은 100분 정도니 단디 맘 먹고 집중해 학습하면 하루에 다 이해할 수 있는 내용이므로 학습 후 바로 React 실무에 풍덩 빠져 치열하게 싸워 보시기 바랍니다.
아래 평판에 원 모양의 Quad를 추가하기 위해서 어떻게 해야 할까…

전체 면 선택하고 Inset Faces한 뒤 Loop Tools-Circle을 하면 쉽게 Quad로 구성된 결과를 얻을 수 있음.
