GLTF 모델에 대한 리엑트 컴포넌트 코드를 작성해 주는 명령 예시
npx gltfjsx ./public/Robot.glb -o ./src/components/Robot.jsx

공간정보시스템 / 3차원 시각화 / 딥러닝 기반 기술 연구소 @지오서비스(GEOSERVICE)
GLTF 모델에 대한 리엑트 컴포넌트 코드를 작성해 주는 명령 예시
npx gltfjsx ./public/Robot.glb -o ./src/components/Robot.jsx

커브와 매시의 원점이 모두 월드 좌표계의 원점이라는 점.

Array 모디파이어 대신 Screw를 사용한 경우(이전과 커브는 동일하지만 매시는 다름 사용)

위의 결과를 위해 사용된 매시의 모양

42423421라는 문자열에서 42는 2개 존재하는데, 이 중 앞부분에 해당하는 42만을 51로 변경하고자 합니다. 즉 42423421를 51423511이 아닌 51423421로 말입니다. 먼저 SELECT 문으로 제대로된 변환이 이루어지는 확인해 보면 ..
SELECT cd, regexp_replace(cd, '^42', '51', 'g') FROM emd WHERE cd LIKE '42%'

실제 업데이트 하는 SQL은 다음과 같습니다.
UPDATE emd SET cd = regexp_replace(cd, '^42', '51', 'g') WHERE cd LIKE '42%'
React는 선언형 프로그래밍을 지향합니다. 어떤 시각적인 요소를 자식으로 선언해서 웹브라우저에 표시하는데요. 어떤 요소를 참조하기 위해 useRef 훅을 사용합니다. 그런데 처음 컴포넌트가 마운트 될때 useRef로 참조하고자 하는 요소가 아직 참조되지 않을 때가 있습니다. 이럴 때 useRef로 어떤 요소가 제대로 참조될 때 다시 컴포넌트를 렌더링해 줄 필요가 있는데요.
import { OrbitControls } from "@react-three/drei"
import { useRef, useState } from "react";
import * as THREE from "three"
function Outline(props) {
const material = useMemo(
() => new THREE.LineBasicMaterial({ color: 0xffff00 }),
[]
)
return <lineSegments
geometry={props.geometry}
material={material}
/>
}
function MyElement3D() {
const refMesh = useRef()
const [, setRefAllocated ] = useState(false)
return (
<>
<OrbitControls />
<ambientLight intensity={0.1} />
<directionalLight position={[2, 1, 3]} intensity={0.5} />
<mesh
ref={self => { refMesh.current = self; setRefAllocated(true) }}
position={[-1.2, 0, 0]}>
<boxGeometry args={[1,1,1,10,10,10]} />
<meshStandardMaterial color="#8e44ad" />
<Outline geometry={refMesh.current?.geometry} />
</mesh>
</>
)
}
export default MyElement3D
상관없는 코드가 90%고 이 글과 관련된 코드가 10%인데요. 14번에 useRef에 대한 refMesh가 있고, refMesh가 참조하는 것이 25번 코드에 보입니다. 그런데 ref에 대한 지정을 함수로 지정하고 있다는 점입니다. refMesh에 요소가 참조되면 15번 코드에서 만들어 둔 상태 변경 함수를 호출하는데요. React에서 상태 변경은 컴포넌트 함수의 재실행을 의미하므로 refMesh에 어떤 요소가 할당되면 다시 컴포넌트를 렌더링하도록 유도합니다.

