학습/그래픽스

곰곰히 생각해 보면

aigoia 2024. 9. 2. 07:59

 

 

 

 구지 안해도 되는 일인거 같긴 한데 웹GL에 집착하는건 지난 회사에 대한 미련 같은건가 싶기도 하다. 머 시간날때 해두면 나쁘지는 않긴 하다. 개발자에 거의 절반가까이가 자바스크립트를 사용할줄 아니 말이다. 

 

 자바 스크립트는 이걸 배우는 걸로 마무리 해야 겠다. 그 다음부터는 필요한걸 만들자. 강의를 그냥 따라 하는 거는 생각보다 재미가 없다. 이거 하고 몽구스 DB까지 하면 해야 할꺼는 거의 마무리 된다. 

 

 그렇게 하면 유니티에 의존하지 않고도 게임을 만드는 거는 크게 무리 없이 달성할듯 싶다. 주로 인디 게임을 만들꺼고 AAA 게임을 만들게 아니기 때문에 웹GL정도면 크게 무리가 없을듯 싶다.

 

npm i @dimforge/rapier3d-compat -S 

 

 레이피어라는 물리 엔진을 쓰는 듯 싶다. 물리 엔진은 필수적이다. 직접 구현할게 아니라면 말이다. 

 

 일단 저번에 만들었던거 코드 정리를 해준다. ;를 안찍고 뛰어쓰기를 2칸씬 해주는게 이쪽 표준인가 보다. 

 

npm create @quick-start/electron@latest

 웹이 아니라 일반 프로그램으로 만들어 줄 생각이기 때문에 일렉트론 바이트로 진행할 생각이다. 

 

 보고 있는데 바닐라 리엑트 뷰 스벨트 솔리드라는 거를 지원한다고 한다. 솔리드 야는 첨 들어보는데 먼지 좀 확인해 볼 필요가 있을듯 싶다. 검색해 보니 리엑트에 발전형 정도 되는거 같다. 

 

 개인적으로는 스벨트가 끌려서 시간나면 스벨트로 다시 만들어 봐야 할듯 싶다. 타입스크립트도 확인을 해야 할듯 싶긴 한데 일단은 그걸 익히는 것보다 바닐라로 충분히 필요한 걸 만들어 보고 익숙해진다음에 차근 자근 진행해 보도록 한다. 몽고DB라이브러리를 익히는 것이 더 급선무이다. 

 

 

 라이더에서 지원하는 프레임 워크를 보고 있는데  스벨트가 없다. 그럼 작업하기 힘드니 일단은 보류하도록 하자. 

 

 라이더에서 지원하는 C# C++ Dart F# godot unreal node.js 모두 어느정도 가능하다. 머 이 이외에는 딱히 공부를 하진 않는다. 

 

import * as THREE from 'three'

const scene = new THREE.Scene()
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000)
camera.position.z = 5

const renderer = new THREE.WebGLRenderer()
renderer.setSize(window.innerWidth, window.innerHeight)
document.body.appendChild(renderer.domElement)

const geometry = new THREE.BoxGeometry()
const material = new THREE.MeshPhongMaterial({ color: 0x00ff00 })
const cube = new THREE.Mesh(geometry, material)

const ambientLight = new THREE.AmbientLight(0xffffff, 1)
scene.add(ambientLight)
const light = new THREE.DirectionalLight(0xffffff, 2);
light.position.set(2, 0, -2);

scene.add(cube)
scene.add(light)

function animate() {
  requestAnimationFrame(animate)
  cube.rotation.x += 0.01
  cube.rotation.y += 0.01

  renderer.render(scene, camera)
}

animate()

 

 영상하고 완전히 코드가 같을수는 없는듯 싶다.