teardown (분해 및 시뮬레이션)은(는) 무엇을 하나요?
당신은 실제 기계를 실제 수치를 기반으로 부품별로 재구성하고, 하나의 물리적 상태로 구동하며, 그 주위에 엔지니어링 대시보드를 구축합니다. 결과물은 일러스트레이션이 아닌 실제 시뮬레이터처럼 읽혀야 합니다. 어떠한 단계도 건너뛰지 말고, 표시 없이 숫자를 임의로 만들지 마십시오.
입력값
- 기계 (실제 모델명을 명시하는 것이 가장 좋습니다: "Chevrolet 350 small-block", "Mantis hexapod", "Airbus A320 main gear" 등).
- 실제 모습이 담긴 참조 사진 한 장. 사용자가 첨부했다면 사용합니다. 그렇지 않으면 요청하세요. 사용자가 제공할 수 없는 경우, 자유롭게 사용할 수 있는 라이선스 사진 한 장을 찾아(Wikimedia Commons, 파일 페이지에서 라이선스 확인) 저자, 라이선스 및 URL을 기록합니다. 모델링 전에 사진을 살펴보십시오: 비율, 부품 배치, 색상 및 움직이는 부분.
워크플로우 (순서대로 수행)
- 식별. 정확한 기계와 변형을 파악합니다. 선택한 기계를 한 줄로 명시합니다.
- 먼저 실제 숫자, 하나의 데이터 블록. 기하학을 작성하기 전에
DATA블록을 연구하고 작성합니다: 빌드에 사용될 모든 치수, 질량, 비율, 속도, 각도 및 타이밍. 각 항목에는kind(published(공개),derived(파생),estimated(추정))와 번호가 매겨진 출처를 포함합니다.references/research.md를 읽으십시오. 규칙: 제조사 데이터시트, 매뉴얼, 표준, 논문 및 기록 기관을 선호합니다. 가능하면 두 출처를 교차 확인합니다. 사진에서 스케일링한 숫자는estimated(추정)입니다. 다른 숫자에서 계산한 숫자는derived(파생)입니다. 이 블록을 빌드 전에 간단한 테이블 형태로 채팅에 사용자에게 보여줍니다. - 키트에서 시작.
kit/template.html을 출력 폴더의<machine>-live.html로 복사하고kit/three.js를 그 옆에 복사합니다.MACHINE:CSS,MACHINE:DASH및<script id="machine">블록만 편집합니다. 키트는 스테이지, three.js 설정, 간단한 궤도 컨트롤, 단면도, 게이지 및 시계를 제공합니다. API는references/dashboard.md를 참조하십시오. - 숫자로 부품 만들기. 모든 메시 치수는
N.<키>(데이터 블록) 또는 그 옆에 코드로 작성된 파생 값에서 비롯됩니다. 실제 대응물이 있는 것에 대해 매직 넘버는 사용하지 마십시오. 사진의 비율과 부품 모양을 일치시키고,kit헬퍼(TD.span, 돌출 형태,TD.glow)를 사용합니다. - 하나의 물리적 상태가 모든 것을 구동합니다. 최소 통합 상태(크랭크 각도, 이동 거리, 시간, 밸브 위치)를 정의합니다.
step()이 이를 적분합니다.derive()는 실제 운동학(references/kinematics.md참조)을 사용하여 전체 기계(위치, 각도, 속도, 힘, 압력)를 계산합니다.pose()는 파생된 값만 메시에 복사합니다. 움직이는 부품에Math.sin(time)장식을 사용하지 마십시오. - 동일한 상태를 중심으로 한 대시보드. 모든 판독값, 차트, 스트립 및 막대는 자체 타이머가 아닌 파생 객체
S에서 읽습니다. 사이클에 대한 차트는 동일한 솔버를 샘플링된 위상에서 호출하여 계산됩니다. 포함 사항: 주요 숫자, 현재 위상/스트로크 레이블, 이동 커서가 있는 각도 또는 위상에 대한 하나 이상의 차트, 부품별 선택기, 출처가 포함된 데이터 블록, 크레딧이 포함된 참조 사진, 컨트롤. 레이아웃 및 게이지 선택:references/dashboard.md. - 단면도. 동작을 가리는 부분을 통과하는 클리핑 평면 단면도(
TD.cutaway)를 추가합니다. 속이 빈 쉘을 만들어 벽 부분만 캡 색상을 표시하도록 하고, 앞에 있는 것을 반투명하게 처리하며, 숨겨진 동작(연소 섬광, 오일 기둥, 기어 맞물림)을 보이게 만듭니다.references/cutaway.md참조. - 외관.
references/look.md를 적용합니다(기본값 다크 SF, 요청 시 라이트 엔지니어링 변형). - 스틸 이미지 렌더링으로 자체 점검.
node kit/stills.mjs <abs html> 0.5,2,4 <abs dir>/check-%.png를 실행합니다(playwright 필요. 그렇지 않으면 브라우저 도구에서 페이지를 열고__render를 호출). 모든 PNG를 검토합니다. 콘솔 오류가 없고, 기계가 프레임 내에 잘 보이며, 단면도가 내부를 보여주고, 스틸 이미지 간에 게이지가 명확히 다르며(스크립트가 동일한 대시보드를 플래그 지정),deterministic: yes가 될 때까지 수정합니다. 그런 다음references/qa.md를 수행합니다. 검사 PNG를 삭제합니다. - 배송.
node kit/inline.mjs <machine>-live.html을 실행하여 three.js와 이미지를<machine>-live.standalone.html(단일 오프라인 파일)로 접습니다. 파일, 데이터 블록(숫자 + 출처), 사진 크레딧, 공개된 숫자가 아닌 추정된 숫자가 무엇인지와 함께 응답합니다.
출력 파일에 대한 엄격한 계약
- 네트워크 없이 디스크에서 열 수 있어야 합니다. three.js는
window.THREE를 노출하는 클래식 스크립트입니다(ES 모듈, CDN 사용 금지). window.__render(t): t는 초 단위, 결정론적이며, 벽시계 시간을 사용하지 않습니다. 컨트롤을 기본값으로 재설정하고, 고정 스텝으로 0부터 상태를 다시 적분한 후 한 프레임을 그립니다. 키트의TD.run이 이를 수행하므로 우회하지 마십시오.- 정상적으로 열리면
requestAnimationFrame으로 실시간 재생됩니다. 컨트롤이 상태를 변경하고 모든 게이지가 따라옵니다. - 데스크톱 스테이지 1600x1000, 모든 창에 맞게 크기 조정됩니다.
- 데이터 블록, 출처 및 사진 크레딧이 페이지에 표시되어야 합니다.
정직 규칙
- 추정된 숫자를 공개된 숫자로 제시하지 마십시오. 태그를 붙이십시오.
- 공개된 숫자가 일치하지 않으면 하나를 선택하고 다른 숫자를 주석에 표시하고 그렇게 말하십시오.
- 동작이 단순하게 모델링된 경우(정적 하중, 이상 기체, 마찰 없음), 응답에 한 줄로 명시하십시오.