Community이미지github.com

richard-evans/scientific-visualisation

POV-Ray를 사용하여 과학/기술 다이어그램 및 개념 아이콘 제작 - 원자, 결합, 결정/분자 구조, 벡터장 화살표, 진동 '파동' 커넥터, 발광/에너지 효과, 금속 마감 및 논문, 발표, 포스터, 보조금 제안서에 바로 사용할 수 있는 투명 배경 렌더링.

scientific-visualisation란 무엇인가요?

이 스킬은 POV-Ray(텍스트 기반 3D 렌더러)를 활용하여 과학적 다이어그램과 개념 아이콘을 제작하는 도구 세트와 설계 관행을 제공합니다. 특히 분자 구조, 결정 격자, 입자 배열, 물리적 과정(레이저 펄스, 입자 흐름, 열적 무질서, 추상적 힘 또는 상호작용, 벡터장)을 설명하는 정밀한 이미지가 필요할 때 유용합니다. 이 스킬은 재사용 가능한 매크로(원자, 결합, 화살표, 파동 관, 발광 효과 포함), 미리 설정된 조명 및 배경(투명 알파 채널 포함), 그리고 5가지 즉시 사용 가능한 위젯 템플릿(레이저 펄스, 입자 전류, 열적 격자, 상호작용 삼각형)을 제공하여 자신의 요구에 가장 가까운 템플릿을 복사하고 매개변수만 조정하면 됩니다. 또한 실제 시뮬레이션 데이터(예: DFT, 분자 동역학)를 렌더링하는 방법과 일반적인 함정(예: POV-Ray의 음소거 알파 채널 버그, 예약어 충돌)을 해결하는 방법에 대한 지침도 포함됩니다. 결과물은 논문, 슬라이드, 보조금 제안서 PDF에 바로 삽입 가능한 독립형 다이어그램 또는 아이콘입니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/richard-evans/research-skills/tree/HEAD/scientific-visualisation

Installed? Explore more 이미지 skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

과학 시각화 with POV-Ray

이 스킬은 실제 히어로 피규어(자성 기저 상태 렌더링 4개 + 보조금 제안서를 위한 개념 아이콘 위젯 5개)를 위해 개발된 POV-Ray 빌딩 블록 및 관행 세트를 패키지화하며, 여러 차례의 시각적 검토를 통해 정제되었습니다. 결과물이 다른 사람이 읽을 문서에 삽입될 독립형 다이어그램이나 아이콘일 때 언제든지 사용하세요. UI나 웹 페이지가 아닌, 렌더링된 이미지입니다.

POV-Ray를 사용하는 이유와 이것이 제공하는 이점

POV-Ray 장면은 일반 텍스트로 작성됩니다. 즉, 쉽게 매개변수화(원자 N개 반복, 격자 생성, 매개변수 스위핑)가 가능하고, 재사용 가능한 매크로로 구성하기 쉬우며, 작업을 다시 하지 않고도 다른 해상도로 다시 렌더링하기 쉽습니다. 출력은 평평하고 정밀하게 제어된 래스터 이미지(대화형 3D 장면이 아님)로, 논문, 슬라이드, 보조금 PDF가 실제로 원하는 형식입니다.

빠른 시작

  1. 먼저 #include "common.inc" - 카메라, 부드러운 3점 조명 장치, 배경/투명도, 공유 마감 프리셋을 설정합니다. 한 번 살펴보세요. 주석은 각 선택 뒤에 있는 이유를 설명합니다(이것에서 벗어나야 하는 경우 중요).
  2. 다음 중 필요한 것을 가져오세요:
    • molecule.inc - 원자(sv_atom), 결합(sv_bond), 벡터 화살표(sv_arrow)
    • wave.inc - 진동하는 튜브: 전파하는 파동과 퍼지 "추상적 상호작용" 커넥터는 동일한 매크로(sv_wave_tube)로 매개변수만 다릅니다.
    • glow.inc - 발광/뜨거움/에너지로 읽혀야 하는 모든 것에 대한 계층형 후광 트릭(sv_glow_sphere)
    • orientation_color.inc - 방향/각도를 지각적으로 구별되는 색상에 매핑합니다(sv_orientation_colour / sv_colour_wheel). 방향 자체가 데이터(스핀 각도, 흐름 방향, 위상)일 때 사용합니다.
  3. povray를 직접 호출하지 말고 scripts/render.sh <scene.pov> [W] [H] [out.png]로 렌더링하세요. 이 스크립트는 +UA(실제 알파 채널), 합리적인 안티앨리어싱을 설정하고, POV-Ray를 이 스킬의 assets/에 연결하여 #include가 파일을 복사하지 않고도 해결되도록 하며, 알파 채널이 잘못 나온 경우 경고합니다(아래의 함정 참조 - 이전 실제 세션에서 조용히 문제를 일으킨 적이 있습니다).
  4. 결과를 확인한 후 완료했다고 하지 마세요. Read 도구로 PNG를 다시 읽고 실제로 확인하세요. POV-Ray는 오류 없이 미묘하게 잘못된 것(카메라 프레임에 의해 잘림, 잘못된 색상, 화살표 겹침)을 기꺼이 렌더링합니다.

다섯 가지 위젯 템플릿

assets/widgets/에는 위 빌딩 블록의 실제 예제인 5개의 바로 적용 가능한 장면이 있습니다:

파일보여주는 내용제작 재료
laser.pov전파하는 진동파 + 방향 화살표 (빛, 소리, 모든 신호)sv_wave_tube (열림, 테이퍼 없음)
particle_current.pov각각 벡터 속성을 가진 N개 입자 행, 흐름 방향으로 표류sv_atom + sv_arrow + 흐름 화살표
thermal_grid.pov작은 위치 지터(불규칙성)가 있는 NxN 격자, 중심으로부터의 거리에 따라 뜨거움-차가움으로 발광sv_glow_sphere + 지터가 있는 격자 루프
interaction_triangle.pov퍼지고, 발광하며, 단단하지 않은 "상호작용" 선으로 연결된 N개 객체 (물리적 결합과 구별됨)sv_atom + sv_wave_tube (테이퍼, 지터, 발광)

필요한 것에 가장 가까운 것을 복사하고, 기하학 자체를 건드리기 전에 상단의 선언된 매개변수(색상, 개수, 간격, 진폭)를 변경하세요. 네 개 모두 "조절 손잡이"가 상단에 있습니다.

개념 아이콘이 아닌 실제 분자/결정 구조의 경우 위젯을 건너뛰고 바로 molecule.inc로 가세요: 원자 좌표를 반복하여 sv_atom과 sv_bond를 호출하고, 원자별 벡터(스핀, 쌍극자, 변위)에 sv_arrow를 사용하며, 해당 벡터의 방향 자체가 색상 코딩할 가치가 있는 의미 있는 데이터인 경우 sv_orientation_colour를 사용하세요.

유지할 가치가 있는 디자인 관행

이것들은 임의적이지 않습니다. 각각은 실제 시각적 검토 라운드에서 나왔습니다:

  • 흰색 배경, 실제 알파 채널 (+UA). 렌더링이 눈에 띄는 상자 없이 슬라이드/페이지/그림에 바로 들어가고, 뒤에 무엇이 있든 다른 패널 옆에 깔끔하게 구성됩니다.
  • 단일 점 광원이 아닌 common.inc의 3점 조명 장치. 하나의 하드 라이트는 렌더링된 3D 객체("클립 아트")로 읽힙니다. 부드러운 키+필+필 조명 장치는 정교한 무광 인쇄 삽화로 읽힙니다. 다중 패널 그림의 모든 패널에서 동일한 조명 장치를 유지하면 하나의 패밀리로 읽힙니다. 이웃과 다르게 조명된 패널은 기하학 스타일이 일치하더라도 일치하지 않는 스티커처럼 보입니다.
  • 결합/단단한 커넥터는 카메라에서 약간 떨어진 z-오프셋을 얻습니다 (sv_bond의 ZOffset 매개변수). 결합과 화살표가 동일한 영역을 거의 평행하게 통과할 수 있을 때마다 사용합니다. 그렇지 않으면 z-파이트가 발생하거나 결합이 화살촉 속으로 시각적으로 파고듭니다. 일반적인 장면 규모에서 충분히 작아(0.15-0.25 단위) 아무도 의식적으로 있는지 알아차리지 못할 것입니다.
  • 화살표는 "닿는" 것보다 10-20% 더 짧습니다. 두 벡터 화살표가 공유 지점에서 만나는 경우, 팁이 서로를 피할 때까지 Scale을 줄이세요. 닿는 팁은 데이터가 아닌 렌더링 결함으로 읽힙니다.
  • 추상적 연결과 물리적 연결은 다른 시각적 언어를 얻습니다. 실제 결합(sv_bond): 단단하고, 선명하며, 무광입니다. 추상적 결합/힘/상관관계(Glow=true인 sv_wave_tube): 물결 모양, 부드러운 가장자리, 발광합니다. 문자 그대로의 원자-원자 궤도 중첩을 가리킬 수 없는 상호작용을 물리적 막대인 것처럼 그리지 마세요.
  • "일반적인" 배열을 약간 왜곡하세요. 완벽한 정삼각형이나 완벽하게 규칙적인 격자는 클립 아트로 읽힙니다. 작고 의도적인 불규칙성(interaction_triangle.pov의 삼각형 또는 thermal_grid.pov의 지터 참조)은 시뮬레이션 출력이 아닌 개략적인 아이콘에서도 "실제 시스템"으로 읽힙니다.

아이콘이 아닌 실제 시뮬레이션 데이터를 렌더링할 때

원자 위치/벡터가 실제 시뮬레이션(DFT, 분자 동역학, 미세자기학 등)에서 오는 경우, 아이콘-위젯 관행은 여전히 적용되지만, 수동으로 값을 선택하는 대신 실제 좌표 데이터에서 sv_atom/sv_bond/sv_arrow 호출을 채웁니다. 실용적인 참고 사항:

  • 결합은 수동이 아닌 원자 쌍 사이의 거리 임계값으로 생성하세요.
  • 값비싼 시뮬레이션을 다시 실행하지 않고 실제 물리적으로 주기적인 타일 패치(하나의 시뮬레이션 셀보다 더 큰 영역)를 보여주고 싶고, 속성이 균일하게 타일링되는 경우(대부분의 단순한 정렬된 기저 상태에 해당), 더 큰 시스템을 재시뮬레이션하는 대신 이미 수렴된 소형 셀 결과를 기하학적으로 복제하는 것이 종종 유효합니다. 단, 먼저 해당 속성이 실제로 셀마다 변하지 않는지 확인하세요.
  • 임의의 직사각형이 아닌 물리적으로 의미 있는 경계(예: 하나의 완전한 배위 껍질/단위 모티프)로 자르세요. 자르기 자체가 구조에 대한 사실을 말해야 합니다.

문제 해결

POV-Ray 구문 분석 오류 또는 잘못 보이는 렌더링을 디버깅하는 데 시간을 보내기 전에 references/troubleshooting.md를 읽으세요. 이 스킬을 구축하는 동안 이미 발견된 특정 함정(일반 변수 이름처럼 보이는 예약된 SDL 단어, 무음 알파 투명도 버그, POV-Ray의 카메라 손방향, sphere_sweep/배열 범위 지정 문제)을 나열합니다. 대부분의 POV-Ray 오류 메시지는 구문 문제에 대해 정직하지만 일반 프로그래머의 기대에서 왜 그렇게 보이는지에 대해서는 도움이 되지 않습니다. 이 파일은 동일한 몇 가지 함정을 다시 발견하지 않도록 존재합니다.

각 매크로의 매개변수 및 설계 근거에 대한 더 완전한 설명(여기에 포함된 것보다 더 많은 예제 호출 포함)은 references/techniques.md를 참조하세요.

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

관련 스킬