Skip to content

Instantly share code, notes, and snippets.

@segfault87
Last active January 22, 2022 01:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save segfault87/449bd9b2d3ae6ce64b6e6d72c37c73a1 to your computer and use it in GitHub Desktop.
Save segfault87/449bd9b2d3ae6ce64b6e6d72c37c73a1 to your computer and use it in GitHub Desktop.
LDraw.rs 스프린트서울 간단 가이드

간단한 소개

LDraw는 가상의 LEGO 모델을 표현하기 위한 규격으로, 1996년에 처음 시작되어 현재 전 세계의 자원봉사자들에 의해 유지되어 오고 있습니다.

LDraw는 파일 규격과 개별 부품을 모델링한 파트 라이브러리로 구성되어 있습니다. 파트 라이브러리는 LDraw에서 공식적으로 배포하는 부품 라이브러리로, 작업자들이 개별 부품을 모델링하여 Part Tracker에 등록된 뒤 리뷰를 거쳐 공식 라이브러리에 포함된 후 주기적인 업데이트에 포함됩니다.

LDraw.rs는 LDraw 파일을 읽고 쓰고, 화면에 렌더링하기 위한 라이브러리입니다. 네이티브와 웹을 지원하며, 데모 페이지에서 실제로 동작하는 모습을 볼 수 있습니다. LDraw.rs는 Rust로 만들어졌습니다.

LDraw.rs의 목표

LDraw.rs는 온라인 기반의 LEGO CAD 서비스를 만드는 프로젝트의 일부분입니다. 웹에서 LEGO 모델을 조립하고 다른 사람들과 공유하는 서비스를 만드는 것이 목표입니다. 이번 스프린트 서울에서 다루는 범위는 아니지만 관련하여 자유롭게 의견을 나눠도 좋을 것 같습니다.

개략적인 crate 설명

  • ldraw: LDraw 파일 표현과 색상 등 LDraw 스펙과 라이브러리 파일 입출력을 다룹니다.
  • ir: LDraw 부품을 GPU에서 렌더링할 수 있는 버퍼 형태로 표현합니다. Internal Representation의 약자입니다.
  • renderer: ir에서 만들어진 버퍼를 화면에 출력합니다.
  • olr: 오프라인 렌더러입니다. 서버 사이드에서 모델을 렌더링하기 위하여 만들었습니다.
  • tools/baker: LDraw 부품을 IR로 변환합니다.
  • tools/ldr2img: LDraw 모델을 png로 렌더링합니다.
  • tools/viewer: LDraw 모델을 화면에 렌더링합니다.

어떤 것을 기여할 수 있나요?

  • 아직 CI가 붙어 있지 않습니다. CI를 붙이면 좋을 것 같습니다.
  • 단위 테스트가 아직 없습니다. 몇몇 모듈에 대해 단위 테스트를 붙이는 것도 좋을 것 같습니다.
  • LDraw.rs는 한 명의 개발자가 Rust 언어를 배우면서 만드는 프로젝트라서 코드 퀄리티의 면에서 개선의 여지가 많습니다. Rust 언어에 익숙하시다면 잘못 쓰고 있는 부분은 없는지, 개선할 만한 부분이 있는지를 봐 주시면 큰 도움이 됩니다.
  • 쉐이더는 Three.js에서 일부분을 가져왔는데, 현재는 PMREM(Premultiplied Mipmapped Radiance Environment Map)에 기반하고 있습니다. 더 좋게 보일 수 있는 아이디어도 환영합니다.
  • 그 외 다른 어떤 기여도 환영합니다! 저(@segfault87)와 논의 후 진행해 주시면 감사하겠습니다.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment