@hatiolab/figure-model 0.1.30 โ 0.1.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -1
- package/dist/release-contract.d.ts +2 -2
- package/dist/release-contract.d.ts.map +1 -1
- package/dist/release-contract.js +45 -3
- package/dist/release-contract.js.map +1 -1
- package/dist/types.d.ts +15 -4
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +15 -4
- package/dist/types.js.map +1 -1
- package/dist/v3-asset-types.d.ts +116 -0
- package/dist/v3-asset-types.d.ts.map +1 -0
- package/dist/v3-asset-types.js +2 -0
- package/dist/v3-asset-types.js.map +1 -0
- package/dist/v3-asset.d.ts +8 -0
- package/dist/v3-asset.d.ts.map +1 -0
- package/dist/v3-asset.js +135 -0
- package/dist/v3-asset.js.map +1 -0
- package/dist/v3-authoring-session.d.ts +119 -0
- package/dist/v3-authoring-session.d.ts.map +1 -0
- package/dist/v3-authoring-session.js +132 -0
- package/dist/v3-authoring-session.js.map +1 -0
- package/dist/v3-capabilities.d.ts +3 -0
- package/dist/v3-capabilities.d.ts.map +1 -0
- package/dist/v3-capabilities.js +221 -0
- package/dist/v3-capabilities.js.map +1 -0
- package/dist/v3-contract.d.ts +7 -0
- package/dist/v3-contract.d.ts.map +1 -0
- package/dist/v3-contract.js +12 -0
- package/dist/v3-contract.js.map +1 -0
- package/dist/v3-create.d.ts +61 -0
- package/dist/v3-create.d.ts.map +1 -0
- package/dist/v3-create.js +151 -0
- package/dist/v3-create.js.map +1 -0
- package/dist/v3-document.d.ts +5 -0
- package/dist/v3-document.d.ts.map +1 -0
- package/dist/v3-document.js +31 -0
- package/dist/v3-document.js.map +1 -0
- package/dist/v3-editor-workspace.d.ts +367 -0
- package/dist/v3-editor-workspace.d.ts.map +1 -0
- package/dist/v3-editor-workspace.js +179 -0
- package/dist/v3-editor-workspace.js.map +1 -0
- package/dist/v3-graph-types.d.ts +91 -0
- package/dist/v3-graph-types.d.ts.map +1 -0
- package/dist/v3-graph-types.js +2 -0
- package/dist/v3-graph-types.js.map +1 -0
- package/dist/v3-graph.d.ts +5 -0
- package/dist/v3-graph.d.ts.map +1 -0
- package/dist/v3-graph.js +631 -0
- package/dist/v3-graph.js.map +1 -0
- package/dist/v3-json.d.ts +13 -0
- package/dist/v3-json.d.ts.map +1 -0
- package/dist/v3-json.js +94 -0
- package/dist/v3-json.js.map +1 -0
- package/dist/v3-part-edit.d.ts +12 -0
- package/dist/v3-part-edit.d.ts.map +1 -0
- package/dist/v3-part-edit.js +61 -0
- package/dist/v3-part-edit.js.map +1 -0
- package/docs/assembly-constraints-v3.md +141 -0
- package/docs/prototypes/README.md +73 -0
- package/docs/prototypes/render-dryroom.py +60 -0
- package/docs/prototypes/render-full-dryroom.mjs +86 -0
- package/docs/prototypes/shapeassembly-probe-results.json +325 -0
- package/docs/prototypes/shapeassembly-probe.py +84 -0
- package/docs/prototypes/v3-asset-samples.mjs +15 -0
- package/docs/prototypes/v3-asset-store.mjs +52 -0
- package/docs/prototypes/v3-asset-store.test.mjs +59 -0
- package/docs/prototypes/v3-asset.mjs +1 -0
- package/docs/prototypes/v3-asset.schema.json +44 -0
- package/docs/prototypes/v3-asset.test.mjs +68 -0
- package/docs/prototypes/v3-authoring-session.mjs +1 -0
- package/docs/prototypes/v3-authoring-session.test.mjs +65 -0
- package/docs/prototypes/v3-capability-plan.mjs +1 -0
- package/docs/prototypes/v3-capability-plan.test.mjs +56 -0
- package/docs/prototypes/v3-capability-samples.mjs +23 -0
- package/docs/prototypes/v3-document.mjs +2 -0
- package/docs/prototypes/v3-document.schema.json +66 -0
- package/docs/prototypes/v3-document.test.mjs +55 -0
- package/docs/prototypes/v3-dryroom-mesh.mjs +60 -0
- package/docs/prototypes/v3-dryroom-mesh.test.mjs +30 -0
- package/docs/prototypes/v3-editor-browser.mjs +97 -0
- package/docs/prototypes/v3-editor-workspace.mjs +1 -0
- package/docs/prototypes/v3-editor-workspace.test.mjs +35 -0
- package/docs/prototypes/v3-feature-pattern.test.mjs +131 -0
- package/docs/prototypes/v3-full-conveyor.mjs +60 -0
- package/docs/prototypes/v3-full-conveyor.test.mjs +61 -0
- package/docs/prototypes/v3-full-dryroom.mjs +67 -0
- package/docs/prototypes/v3-full-dryroom.test.mjs +54 -0
- package/docs/prototypes/v3-full-forklift.mjs +40 -0
- package/docs/prototypes/v3-full-forklift.test.mjs +37 -0
- package/docs/prototypes/v3-full-robot.mjs +35 -0
- package/docs/prototypes/v3-full-robot.test.mjs +68 -0
- package/docs/prototypes/v3-kernel.mjs +147 -0
- package/docs/prototypes/v3-kernel.test.mjs +144 -0
- package/docs/prototypes/v3-layout.test.mjs +281 -0
- package/docs/prototypes/v3-linear-comparison.py +183 -0
- package/docs/prototypes/v3-more-samples.test.mjs +182 -0
- package/docs/prototypes/v3-payload-collision.mjs +54 -0
- package/docs/prototypes/v3-payload-collision.test.mjs +68 -0
- package/docs/prototypes/v3-payload-fit.mjs +58 -0
- package/docs/prototypes/v3-payload-fit.test.mjs +59 -0
- package/docs/prototypes/v3-repeated-binding.mjs +13 -0
- package/docs/prototypes/v3-repeated-binding.test.mjs +46 -0
- package/docs/prototypes/v3-runtime-browser.mjs +76 -0
- package/docs/prototypes/v3-samples.test.mjs +144 -0
- package/docs/prototypes/v3-semantics.test.mjs +55 -0
- package/docs/prototypes/v3-spatial-plan.test.mjs +102 -0
- package/docs/prototypes/v3-typed-plan.mjs +3 -0
- package/docs/prototypes/v3-typed-plan.test.mjs +70 -0
- package/docs/prototypes/v3-typed-repeat.test.mjs +96 -0
- package/docs/v3-asset-persistence.md +66 -0
- package/docs/v3-authoring-transactions.md +57 -0
- package/docs/v3-capability-bindings.md +109 -0
- package/docs/v3-common-kernel-experiment.md +116 -0
- package/docs/v3-core-semantics.md +303 -0
- package/docs/v3-cutover.md +27 -0
- package/docs/v3-design.md +388 -0
- package/docs/v3-document-contract.md +55 -0
- package/docs/v3-dryroom-profile-validation.md +87 -0
- package/docs/v3-editor-integration.md +59 -0
- package/docs/v3-full-conveyor-validation.md +69 -0
- package/docs/v3-full-dryroom-validation.md +55 -0
- package/docs/v3-full-forklift-validation.md +41 -0
- package/docs/v3-full-robot-validation.md +64 -0
- package/docs/v3-layout-system.md +318 -0
- package/docs/v3-minimal-model.md +255 -0
- package/docs/v3-operator-contracts.md +148 -0
- package/docs/v3-payload-collision-validation.md +42 -0
- package/docs/v3-payload-contact-validation.md +56 -0
- package/docs/v3-repeated-binding-validation.md +42 -0
- package/docs/v3-research-review.md +160 -0
- package/docs/v3-runtime-extraction.md +107 -0
- package/docs/v3-sample-validation-expanded.md +106 -0
- package/docs/v3-sample-validation.md +97 -0
- package/docs/v3-shapeassembly-reproduction.md +99 -0
- package/docs/v3-spatial-contracts.md +84 -0
- package/docs/v3-status.md +41 -0
- package/docs/v3-storage-integration.md +58 -0
- package/docs/v3-typed-repeat-contracts.md +79 -0
- package/package.json +1 -1
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
# Figure v3 ์ต์ ์คํ ๋ชจ๋ธ โ r2 ์ค๊ณ ํ๋ณด
|
|
2
|
+
|
|
3
|
+
> ํ์ฌ ๊ตฌํยท๊ฒ์ฆยท์ ํ ์ฐ๊ฒฐ ์ํ๋ [V3 ํตํฉ ํํฉ](v3-status.md)์ ๋ฐ๋ฅธ๋ค. ๋ณธ๋ฌธ์ ๋จ๊ณ๋ณ ์ฐ๊ตฌ/๊ฒ์ฆ ๊ธฐ๋ก์ ์ ํ ์ ์ฒด ์๋ฃ ์ ์ธ์ด ์๋๋ค.
|
|
4
|
+
|
|
5
|
+
> ์ค๊ณ ๋ฐฉํฅ์ [r3 ํต์ฌ ์๋ฏธ๋ก ๊ธฐ์ค์](v3-core-semantics.md)์ผ๋ก ๋์ฒดํ๋ค.
|
|
6
|
+
> ์ด ๋ฌธ์๋ ๊ณผ๊ฑฐ ๊ฐ์ค๊ณผ ์คํ ๊ทผ๊ฑฐ๋ก ๋ณด์กดํ๋ฉฐ ํ์ฌ ๋ช
์ธ์ ํผ์ฉํ์ง ์๋๋ค.
|
|
7
|
+
|
|
8
|
+
> ์ฑํ ๋ณด๋ฅ: [์ ํ ์ฐ๊ตฌ ๊ฒํ ](v3-research-review.md)๋ฅผ ๋จผ์ ๋ฐ๋ฅธ๋ค.
|
|
9
|
+
> ์ํ DAG๋ง ํ์ฉํ๊ฑฐ๋ ๋ฐฐ์น/์ด๋ ๋ถ๋ชจ๋ฅผ ์ผ์น์ํค๋ ์ ํ๋ ๋น๊ต ๊ฒ์ฆ ์ ์ ๊ฐ์ค์ด๋ค.
|
|
10
|
+
> [์ค์ ์ํ ๋์
๊ฒ์ฆ](v3-sample-validation.md): ์ปจ๋ฒ ์ด์ด์ ๊ฐ๋ณ ๋ฐ๋ณต์ ํ์ ๋ฒ์๋ก
|
|
11
|
+
> ๋ฏธ๋ฃจ๋ฉด ๊ธฐ์กด ๊ธฐ๋ฅ์ ๋ณด์กดํ์ง ๋ชปํ๋ค. ์ค์ ๋จ๋ฉด feature์ ๋ณตํฉ ์ด๋ migration๋ ๋ฏธ์์ด๋ค.
|
|
12
|
+
> [16์ข
ํ๋ ๊ฒ์ฆ](v3-sample-validation-expanded.md): ์ํ ๊ธฐ๋ฐ ํ์ ๋ณํ(G(d,q)),
|
|
13
|
+
> ์ํ๊ณผ ๋ฐ๋ฅ ์ ์ด์ ๋ถ๋ฆฌ, ๊ณ ์ ๊ฐ์/๊ณ ์ pitch ๋ฐ๋ณต์ ๊ตฌ๋ถ๋ ํ์ ๋ณด์์ฌํญ์ด๋ค.
|
|
14
|
+
> ํ์ฌ์ ์ํ ์น์ + ๊ฐ์ฒด ์ด๋๋ง์ผ๋ก ๊ธฐ์กด ์ํ ์ ๋ถ๋ฅผ ํํํ๋ค๋ ์ฃผ์ฅ์ ์ฑ๋ฆฝํ์ง ์๋๋ค.
|
|
15
|
+
> [๊ณตํต ์ปค๋ ์คํ](v3-common-kernel-experiment.md): 213๊ฐ ํฌ๊ธฐยท์ํ ์กฐํฉ์ ์คํํ๋ค.
|
|
16
|
+
> ๋ฐ๋ณต ๋ฐฐ์น์ ๊ฐ๋ณ ํ์ ํ์ ์์, ์ํ ๊ธฐ๋ฐ geometry๊ฐ ์ถ๊ฐ ๊ณ์ฝ์ผ๋ก ๋๋ฌ๋ฌ๋ค.
|
|
17
|
+
> ๋ถ๋ถ ๋ชจ๋ธ/proxy ์คํ์ด๋ฉฐ ์ต์ข
๋ช
์ธ๊ฐ ์๋๋ค.
|
|
18
|
+
|
|
19
|
+
2026-09-20. **๊ฒํ ์ค์ธ ํ๋ณด์ด๋ฉฐ v3 ์ถํ ๋ช
์ธ๋ ์ ํ ๊ตฌํ ์๋ฃ๊ฐ ์๋๋ค.**
|
|
20
|
+
์ฌ์ฉ์๊ฐ Flex/Grid๋ฅผ ๋์
์๊ตฌ๊ฐ ์๋ ์ฌ๊ณ ์ ์์๋ก ์ ์ ํ ๋ด์ฉ์ ๋ฐ์ํ๋ค.
|
|
21
|
+
์ด ๋ฌธ์๋ r1์ ์ปจํ
์ด๋ ์ค์ฌ ์ ๊ทผ์ ๋์ฒดํ๋ ๋ฐฉํฅ์ด๋ค. r1 ๋ฌธ์๋ ๋น๊ตยท๋ฐ๋ก ๊ธฐ๋ก์ผ๋ก ๋ณด์กดํ๋ค.
|
|
22
|
+
์ด๋ค ๊ธฐ๋ฅ๋ ์ถ๊ฐํ๊ธฐ ์ ์ ์ด ์ต์ ๋ชจ๋ธ๋ก ํ์ํ ์ฌ๋ก๊ฐ ์ค์ ๋ก ํํ๋๋์ง ๊ฒ์ฆํ๋ค.
|
|
23
|
+
|
|
24
|
+
## 1. ์ถ๋ฐ์ : ๊ณต๊ฐ ๋ฐฐ์ ๋ ์ ์ผํ ์๋ฆฌ๋ ์๋๋ค
|
|
25
|
+
|
|
26
|
+
โ๋ถ๋ชจ๊ฐ ๊ณต๊ฐ์ ๋ฐฐ์ ํ๋คโ๋ ์ค๋ช
์ ์ ๋ฐยท๋ฌธ์ง ๋ฐฐ์ด์๋ ์ข์ง๋ง ๋ชจ๋ ๋ถํ์ ํ์ํ ๊ฒ์ ์๋๋ค.
|
|
27
|
+
๋กค๋ฌ์ ํ์ํ ๊ฒ์ ๊ธธ์ด์ ๋ฐ์ง๋ฆ์ด๊ณ , ๋จํ์ ํ์ํ ๊ฒ์ ๊ณ ์ ์น์์ ๋ถ์ฐฉ ์์น๋ค.
|
|
28
|
+
๊ทธ๊ฒ์ ์ํด ๋ณด์ด์ง ์๋ ์ปจํ
์ด๋ยทslotยทfit ๋จ๊ณ๋ฅผ ํ์๋ก ๋ง๋๋ ๊ฒ์ ๋ณต์ก์ฑ์ ์ฎ๊ธฐ๋ ์ผ์ด๋ค.
|
|
29
|
+
|
|
30
|
+
ํต์ฌ ์ง๋ฌธ์ ๋ ๊ฐ์ง๋ก ์ค์ธ๋ค.
|
|
31
|
+
|
|
32
|
+
1. **ํ์์ ๋ง๋๋ ์น์๋ ์ด๋์ ์ค๋๊ฐ?**
|
|
33
|
+
2. **๊ทธ ํ์์ ๋ฌด์์ ๊ธฐ์ค์ผ๋ก ๋์ด๋๊ฐ?**
|
|
34
|
+
|
|
35
|
+
ํ์์ ๋ง๋๋ ๊ท์น๊ณผ ๊ฐ์ฒด ๋ฐฐ์น๋ ์ํ์ ์ผ๋ก ๋ค๋ฅธ ์ผ์ด๋ค. ์ด๋ฅผ ํ ์์ฑ์ผ๋ก ํฉ์น์ง๋ ์๋๋ค.
|
|
36
|
+
ํธ๋ฆฌํ UI ๋ช
์นญ์ ์๊ฐ ์๋๋ผ ์ ์ฅ๋๋ ๋
๋ฆฝ ๊ท์น๊ณผ ๊ท์น ๊ฐ ์ฐ์ ์์๋ฅผ ์ค์ด๋ ๊ฒ์ด ๋ชฉ์ ์ด๋ค.
|
|
37
|
+
|
|
38
|
+
## 2. ์ ์ง/์ ๊ฑฐ/๋ณด๋ฅ ๊ฒฐ์
|
|
39
|
+
|
|
40
|
+
| ํญ๋ชฉ | r2 ๊ฒฐ์ | ์ด์ |
|
|
41
|
+
| --- | --- | --- |
|
|
42
|
+
| ๊ฐ๋น ํ๋์ ์ ์, ์ํ ๊ฒ์ฌ | ์ ์ง | ์ถฉ๋์ ์ฐ์ ์์๋ก ์จ๊ธฐ์ง ์๋๋ค |
|
|
43
|
+
| ์ด๋ฆ ์๋ ํ์ ๊ธฐ์ค์ /์ขํ๊ณ | ์ ์ง | ๋ถ์ฐฉ ๋์์ด ์ค์ ํ์๊ณผ ๊ฐ์ ์น์๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค |
|
|
44
|
+
| ์ปจํ
์ด๋/slot/fit ์๋ฌดํ | ์ ๊ฑฐ | ๋จ๋
ํ์ยท๋ถ์ฐฉ์ ๋ถํ์ํ ๋จ๊ณ๋ค |
|
|
45
|
+
| Flex/Grid/absolute/fixed ๋ชจ๋ | ํต์ฌ ํ์์์ ์ ๊ฑฐ | ์ขํ/๋ฐฐ์ด/๋ถํ ์ ๋์ผํ ์น์ยท๋ฐฐ์น ์ ์๋ก ํํํ๋ค |
|
|
46
|
+
| intrinsic/basis/preferred/allocated ํฌ๊ธฐ ์ฒด๊ณ | ์ ๊ฑฐ | ์๋ก ๋ค๋ฅธ ํฌ๊ธฐ์ ์ธก์ ยท๋ฐ์ ๊ท์น์ด ๋ถ์์ ํ๋ค |
|
|
47
|
+
| ์๋ grow/shrink, auto ๋ค์ค span | ๋ณด๋ฅ | ๋ช
์ ์๋ ์์ด ๊ณต๊ฐ ์ฌ๋ฐฐ๋ถ์ ์ถ์ธกํ์ง ์๋๋ค |
|
|
48
|
+
| ํ์ ์น์ ์ ์งยท์ํ ์ ์ง | ์ง์ ์๊ตฌ ์ ์ง | geometry ํ๋ผ๋ฏธํฐ์ ์ ์๋ก ํํํด์ผ ํ๋ค |
|
|
49
|
+
| ์ด๋ | ๋ณ๋ ์ํ ์
๋ ฅ์ผ๋ก ์ ์ง | ํฌ๊ธฐ ๋ณ๊ฒฝ๊ณผ ๊ฐ์ฒด ์ด๋์ ์์ง ์๋๋ค |
|
|
50
|
+
| ๋ฐํ์ ๊ฐ์ ๋ณํ | ํ์ ๋ฒ์ | ํ์/๋ถ์ฐฉ/์ธ๋ถ ์ฐธ์กฐ๊ฐ ์ฌ๋ผ์ง๋ ๊ณ์ฝ์ด ๋จผ์ ํ์ํ๋ค |
|
|
51
|
+
| ์ผ๋ฐ ์ ์ฝ solver | ๋์
ํ์ง ์์ | ์ฐ๋ฆฝ ์ ์ฝ ๋์ ๋ฐฉํฅ์ด ์ ํด์ง ๊ณ์ฐ์ผ๋ก ์์ํ๋ค |
|
|
52
|
+
|
|
53
|
+
์ด ์ ํ์ ์ง์ ๋ฒ์๋ฅผ ์ขํ๋ค. ์์ ์กฐ๊ฑด์ ์ต์ ๋ฐฐ์น๋ฅผ ์๋์ผ๋ก ์ฐพ๋ ์ ํ์ด๋ผ๊ณ ์ฃผ์ฅํ์ง ์๋๋ค.
|
|
54
|
+
๋์ ์์ฃผ ์ฐ๋ ์ ์ ์๋์ ๋ํด ์์ ๋ ์์ ๊ณ์ฐ์ ์์ฑํ๋ค.
|
|
55
|
+
์์ฐ ์ฌ๋ก์์ ์์์ด๋ ์์ธ๊ฐ ํญ์ฆํ๋ฉด r2๋ ๊ธฐ๊ฐํ๋ค.
|
|
56
|
+
|
|
57
|
+
## 3. ์คํ ์ ๋ณธ: ์น์ ๊ฐ๊ณผ ๋ฐฐ์น frame
|
|
58
|
+
|
|
59
|
+
### 3.1 ์น์ ๊ฐ
|
|
60
|
+
|
|
61
|
+
์น์ ๊ฐ์ ์์ ๋๋ ์ด๋ฏธ ์ ์๋ ์น์์ ์ ํ ๊ฒฐํฉ์ด๋ค. ๋จ์๋ mm๋ค.
|
|
62
|
+
๊ธฐ๋ณธ ์
๋ ฅ์ width/height/depth. ๋ถํ ์ธ๊ณฝ๋ฟ ์๋๋ผ ๋๊ปยท๋ฐ์ง๋ฆยท๊ฐ๊ตฌ๋ถ ํญ๋ ๊ฐ์ ๊ฐ์ด๋ค.
|
|
63
|
+
|
|
64
|
+
```ts
|
|
65
|
+
type LengthDefinition = {
|
|
66
|
+
constantMm: number
|
|
67
|
+
terms: { ref: LengthId; coefficient: number }[]
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
๊ฐ LengthId๋ ํ๋์ ์ ์๋ง ๊ฐ์ง๋ค. ๋ชจ๋ coefficient๋ ์ ํํ ๋ฌด์ฐจ์ ์์๋ค.
|
|
72
|
+
์ฐธ์กฐ ์๋ ๊ฐ๋ ๊ฐ์ ํ์์ผ๋ก ์ ์ฅํ๋ค. ํ์ ์ด๋ฆ๊ณผ id๋ ๋ถ๋ฆฌํ๋ค.
|
|
73
|
+
๋ฒ์ ์กฐ๊ฑด์ ์ ์๋ฅผ ๋ฎ์ด์ฐ๋ clamp๊ฐ ์๋๋ผ ๋ณ๋์ ๊ฒ์ฆ์์ด๋ค.
|
|
74
|
+
์: thickness > 0, width - 2*thickness > 0.
|
|
75
|
+
๋ด๋ถ ์ขํ/offset ๊ฐ์ ์์์ผ ์ ์๋ค. ๋ชจ๋ LengthId๊ฐ ์์๋ผ๋ ๊ท์น์ ์๋ค.
|
|
76
|
+
|
|
77
|
+
์ด ๋จ๊ณ์์ min/max ์, ๋ ๋ณ์์ ๊ณฑ/๋๋์
, ์์ ์คํฌ๋ฆฝํธ๋ ์๋ค.
|
|
78
|
+
๊ทธ๋ฌ๋ฏ๋ก ์ ์์ DAG๋ฅผ ํผ์น๋ฉด ๋ชจ๋ ๊ฐ์ ์
๋ ฅ d์ ๋ํ ์ํ์ aยทd+b๋ค.
|
|
79
|
+
parameter๋ง๋ค min/max๋ฅผ ์๋ ์ ์ฉํ์ง ์๋๋ค. ๋ถ๊ฐ๋ฅํ ์น์๋ ์์ธ๊ณผ ํจ๊ป ์ง๋จํ๋ค.
|
|
80
|
+
|
|
81
|
+
### 3.2 ๋ฐฐ์น frame
|
|
82
|
+
|
|
83
|
+
ํ์์ ํ๋์ ์ ์ง frame์ ๊ฐ์ง๋ค. frame์ ํ๋์ ๊ธฐ์ค frame๊ณผ ์๋ ๋ณํ์ผ๋ก ์ ์ํ๋ค.
|
|
84
|
+
๊ธฐ์ค์ Figure ์์ ๋๋ ๋ค๋ฅธ ํ์์ ์ด๋ฆ ์๋ feature frame์ด๋ค.
|
|
85
|
+
์ปจํ
์ด๋๋ฅผ ์๊ตฌํ์ง ์์ผ๋ฉฐ, ๋ถํ ๋ฌถ์์ ๋ณํ ์๋ ์ ์ ๊ทธ๋ฃน์ด๋ค.
|
|
86
|
+
|
|
87
|
+
```text
|
|
88
|
+
B_i(d) = B_parent(d) ยท T(offset_i(d)) ยท R_i
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
offset์ ๊ธฐ์ค frame ์ขํ์์์ mm ๊ฐ 3๊ฐ๋ค. R์ ์น์์ ๋ฌด๊ดํ ์ ๊ทํ quaternion์ด๋ค.
|
|
92
|
+
frame๋ง๋ค parent์ ์๋ ๋ณํ ์ ์๋ ํ๋๋ค. ๋ ๋ฐฐ์น ๋ชจ๋๋ฅผ ๊ฒน์ณ ์ฐ์ง ์๋๋ค.
|
|
93
|
+
Figure ์์ ์ ๋ฐ๋ฅ ์ค์ฌ, Y ์์ชฝ, ์ค๋ฅธ์ ์ขํ๊ณ๋ค.
|
|
94
|
+
geometry provider์ ๋ถํ local ์์ ์ ์ค์ฌ์ด๋ฉฐ ๋ค๋ฅธ origin์ด ํ์ํ provider๋ ๋ช
์ ๋ณํํ๋ค.
|
|
95
|
+
|
|
96
|
+
feature๋ ๊ฐ์ frame ๊ด๊ณ๋ก ๋ํ๋ธ๋ค. ์ค์ geometry๊ฐ ์ฐ๋ ์น์์์ ์์น๋ฅผ ๊ณ์ฐํ๋ค.
|
|
97
|
+
์๋ฅผ ๋ค์ด ๋ฌธํ ์๋จ frame์ Y=height/2๋ ๊ทธ ๋ฌธํ geometry์ ๊ฐ์ height ๊ฐ์ด๋ค.
|
|
98
|
+
ํ์/๋ถ์์ ์ํด ๋ง๋ ๋ณ๋ AABB๋ฅผ ์ค์ ๋ฉด์ด๋ผ๊ณ ๊ฐ์ฃผํ์ง ์๋๋ค.
|
|
99
|
+
|
|
100
|
+
์ปดํ์ผ๋ฌ๋ ์น์ ์ฐธ์กฐ์ frame/feature ์์กด์ ๋ชจ๋ ๊ฒ์ฌํ๋ค.
|
|
101
|
+
feature๋ฅผ ๊ฐ์ง ๋ถํ์ ๊ทธ feature ์์ฒด์ ๋ถ์ฐฉํ๋ ์ํ์ ๊ฑฐ์ ํ๋ค.
|
|
102
|
+
๋ค๋ฅธ ๋ถํ์ ์น์๋ฅผ ์ฐธ์กฐํ๋ค๊ณ ๊ทธ ๋ถํ์ ์ด๋๊น์ง ์๋ ์์ํ์ง๋ ์๋๋ค.
|
|
103
|
+
|
|
104
|
+
### 3.3 ํ์ provider ๊ณ์ฝ โ ๋ฐฐ์น ์์ง๊ณผ์ ๊ฒฝ๊ณ
|
|
105
|
+
|
|
106
|
+
geometry ์
๋ ฅ์ ์ด๋ฏธ ๊ฒฐ์ ๋ ์๋ฏธ ์๋ ํ๋ผ๋ฏธํฐ๋ค.
|
|
107
|
+
'๋ฐ์ ์์์ ์ด๋ป๊ฒ๋ ๋ง์ถ๋ค'๋ ๋ ๋ฒ์งธ sizing ์์ง์ ๋ฃ์ง ์๋๋ค.
|
|
108
|
+
|
|
109
|
+
| ๋ํ ํ์ | ์
๋ ฅ | ๋ฐ๋์ ์งํฌ ๊ด๊ณ |
|
|
110
|
+
| --- | --- | --- |
|
|
111
|
+
| ์์ | width, height, depth | ํ๋ฉด๊ณผ ยฑ๋ฐ์น์ feature์ ์ผ์น |
|
|
112
|
+
| ์ํ ๋กค๋ฌ | radius, length | ๋ ๋จ๋ฉด ์ถ์ด ๊ฐ์ radius ์ฌ์ฉ |
|
|
113
|
+
| ์ฌ๊ฐ ์ค๊ณต ํ๋ ์ | outerWidth, outerHeight, depth, wall | innerWidth=outerWidthโ2wall, innerHeight=outerHeightโ2wall |
|
|
114
|
+
| polygon ๋์ถ | profile ์ขํ, depth | ์์ ๋ profile id; ์ ํจ ๋จ๋ฉด๊ณผ ๋์ถ ๋๊ป |
|
|
115
|
+
|
|
116
|
+
๋กค๋ฌ ์ถ์ provider-local Z๋ก ์ ํ๊ณ ์ฅ๋ฉด ๋ฐฉํฅ์ ๋ฐฐ์น frame์์ ํ์ ํ๋ค.
|
|
117
|
+
ํ๋ ์์ opening feature๋ ์ค์ ์์ชฝ ๋ฉด๊ณผ ๋์ผ ํ๋ผ๋ฏธํฐ๋ฅผ ์ฌ์ฉํ๋ค.
|
|
118
|
+
์ผ๋ฐ polygon์ ์์ชฝ offsetยทrounding ์ ํจ์ฑ์ ์ํ์๋ง์ผ๋ก ์ฆ๋ช
๋์ง ์๋๋ค.
|
|
119
|
+
๋ฏธ์ง์ feature๋ฅผ bounds๋ก ๋์ฒดํ์ง ์๊ณ provider ๊ฒ์ฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๋ค.
|
|
120
|
+
|
|
121
|
+
์ด ํ๋ ๊ณ์ฝ์ ์์๋ค. ๊ธฐ์กด ์ฌ์ฏ primitive, hollow, round, material, capability,
|
|
122
|
+
label/port/slot์ ๋ชจ๋ ํฌ๊ดํ๋ provider catalog๋ฅผ ์์ฑํ๊ธฐ ์ ์๋ v3 ์ ํ์ ํ์ ํ์ง ์๋๋ค.
|
|
123
|
+
์ธ๋ถ capability slot๊ณผ ๋ฐฐ์น ๊ณ์ฐ์ ์ํ ๊ฐ์ slot์ ํผ์ฉํ์ง ์๋๋ค.
|
|
124
|
+
|
|
125
|
+
## 4. ํธ์ ์กฐ์์ ์์ ๋ง๋๋ ๋ฐฉ๋ฒ์ด์ง ์ถ๊ฐ ์คํ ๊ท์น์ด ์๋๋ค
|
|
126
|
+
|
|
127
|
+
UI์ ์กฐ์์ '์น์ ์ ์ง', '๋ ๋ฉด ์ฌ์ด ์ฑ์ฐ๊ธฐ', '๊ท ๋ฑ ๋๋๊ธฐ', '์ด ๋ฉด์ ๋ถ์ด๊ธฐ'๋ค.
|
|
128
|
+
AI๋ ๊ฐ์ typed transaction์ ์์ฑํ๋ค. ์ผ๋ฐ ์ฌ์ฉ์์๊ฒ ์์์ ์์ฑํ๋๋ก ์๊ตฌํ์ง ์๋๋ค.
|
|
129
|
+
|
|
130
|
+
์๋ฅผ ๋ค์ด ๊ฐ์ ์ขํ๊ณ์ ๊ฒฝ๊ณ l,h ์ฌ์ด์์ ์ฌ๋ฐฑ a,b๋ฅผ ๋จ๊ธด๋ค๋ฉด:
|
|
131
|
+
|
|
132
|
+
```text
|
|
133
|
+
size = h-l-a-b
|
|
134
|
+
center = (l+h+a-b)/2
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
ํญ L์ ๊ณ ์ ๊ฐ์ n, ๊ฐ๊ฒฉ g, ์๋ ์ฌ๋ฐฑ a,b๋ก ๋์ผ ๋ถํ ํ๋ฉด:
|
|
138
|
+
|
|
139
|
+
```text
|
|
140
|
+
itemSize = (L-a-b-(n-1)*g)/n
|
|
141
|
+
center(i) = -L/2+a+itemSize/2+i*(itemSize+g) 0โคi<n
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
n์ ์ ์ ์ ๊ณ ์ ํ ์์ ์ ์์ด๋ฏ๋ก 1/n์ ์์๋ค.
|
|
145
|
+
๊ธฐ๋ณธ UI์์๋ ๋ถํ ์๋ฅผ ๋ถํ์ํ๊ฒ ๋
ธ์ถํ์ง ์๋๋ค. '๋ ๋ฌธ์ง'๊ณผ ๊ฐ์ ํ
ํ๋ฆฟ์ด ์ ํ๋ค.
|
|
146
|
+
๋น๊ท ๋ฑ ๋ถํ ์ ๊ณ ์ ๋น์จ ฮฑ_iโฅ0, ฮฃฮฑ_i=1๋ก ๋จ์ ํญ์ ๋๋๋ฉด ๋๋ค.
|
|
147
|
+
์ต์ ํฌ๊ธฐ๋ฅผ ์๋ฐํ๋ฉด ์๋์ผ๋ก ๋ค๋ฅธ ๋ถํ์ ์ค์ด์ง ์๊ณ ์ด๋ค ์กฐ๊ฑด์ด ๋ถ์กฑํ์ง ์๋ ค์ค๋ค.
|
|
148
|
+
|
|
149
|
+
์ด๋ฌํ ์กฐ์์ด ์์ฑํ ์์ด ์ ์ผํ ์คํ ์ ๋ณธ์ด๋ค.
|
|
150
|
+
ํธ์ ์กฐ์์ label/provenance๋ ์ค๋ช
์ฉ์ด๋ฉฐ ๋ณ๋๋ก ์ฌ๊ณ์ฐํ์ง ์๋๋ค.
|
|
151
|
+
๋ค์ ํธ์งํ ๋๋ ์ ๊ตฌ์กฐ fingerprint๊ฐ ์์ฑ ๋น์์ ์ผ์นํ๋ ๊ฒฝ์ฐ์๋ง ์๋ ์กฐ์ UI๋ฅผ ๋ณต์ํ๋ค.
|
|
152
|
+
๋ค๋ฅธ ๋๊ตฌ๊ฐ ์์ ๋ฐ๊ฟจ๋ค๋ฉด ์ด๋ฅผ ๊ฐ์งํ๊ณ ์๋ณธ ์กฐ์์ ๋ฌด์กฐ๊ฑด ๋ฎ์ด์ฐ์ง ์๋๋ค.
|
|
153
|
+
์ด UX๋ ๊ตฌํ/์ฌ์ฉ์ฑ ๊ฒ์ฆ์ด ํ์ํ๋ค. provenance๋ง ๋ถ์ด๋ฉด ์ฌ์์ง๋ค๊ณ ๊ฐ์ ํ์ง ์๋๋ค.
|
|
154
|
+
|
|
155
|
+
'์ด ๋ฉด์ ๋ถ์ด๊ธฐ'๋ ์ ์ฒด rigid placement๋ฅผ ํ๋์ transaction์ผ๋ก ๊ต์ฒดํ๋ค.
|
|
156
|
+
์๊ธฐ ๋ฉด offset์ ๋นผ์ ํ์์ ์์ ์ ๊ตฌํ๋ ๊ทธ ๋ณด์ ์ ๊ฐ์ ํ์ ์น์๋ฅผ ์ฐธ์กฐํ๋ค.
|
|
157
|
+
์ ๋ ฌ์๊ณผ position์ ๋ ๊ฐ์ writer๋ก ์ ์ฅํ์ง ์๋๋ค.
|
|
158
|
+
๋๋๊ทธ๋ ๊ทธ ์ ์์ ์กฐ์ ๊ฐ๋ฅํ offset์ ํธ์งํ๋ค. ์๋ฏธ๊ฐ ๋ถ๋ช
ํํ๋ฉด ์กฐ์ฉํ ๊ด๊ณ๋ฅผ ํด์ ํ์ง ์๋๋ค.
|
|
159
|
+
|
|
160
|
+
## 5. ์ด๋: ๋ณ๋ ๋ฐฐ์น ๋ถ๋ชจ๋ฅผ ์ถ๊ฐํ์ง ์๋๋ค
|
|
161
|
+
|
|
162
|
+
r1์ ๋
๋ฆฝ์ ์ธ layout parent์ motion parent๋ฅผ ๊ธฐ๋ณธ ๊ตฌ์กฐ๋ก ๋์ง ์๋๋ค.
|
|
163
|
+
๋ฐฐ์น์ ๊ธฐ์ค frame์ด ๊ณง ์ด๋ ์์ ๊ฒฝ๋ก๋ค. ์ฌ๊ธฐ์ joint๋ง ์๋ ๊ฐ์ฒด ๋ณํ์ผ๋ก ์ถ๊ฐํ๋ค.
|
|
164
|
+
|
|
165
|
+
```text
|
|
166
|
+
W_i(d,q) = W_parent(d,q) ยท T(offset_i(d)) ยท R_i ยท J_i(d,q)
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
J_i๋ i์ ์ ์ง local ์ขํ์์ ์์ฉํ๋ค.
|
|
170
|
+
slider: T(axis * displacement), hinge: T(pivot) R(axis,angle) T(-pivot).
|
|
171
|
+
q์ ์ ์ง๊ฐ์ 0์ด๊ณ J(d,0)=I. geometry์ scale matrix๋ฅผ ์ค๋ณต ์ ์ฉํ์ง ์๋๋ค.
|
|
172
|
+
feature๋ ์์ ํ์์ ์ด๋์ ๋ฐ๋ฅธ๋ค. feature ์๋์ lamp๋ ๋ฐ๋ผ์ ์์ง์ธ๋ค.
|
|
173
|
+
|
|
174
|
+
๋ฌธํ๊ณผ ํจ๊ป ์์ง์ด๋ lamp๋ ๋ฌธํ feature์, ๋ฌธ์ง๊ณผ ํจ๊ป ์์ง์ด๋ ์์ก์ด๋ ๋ฌธ์ง feature์ ๋๋ค.
|
|
175
|
+
์น์๋ ๋ฌธ์ง ํญ์ ์ฐธ์กฐํ๋ฉด์ ์ด๋์ ๋ฌธํ์ ๋ฐ๋ฅด๋ ๊ฒฝ์ฐ์๋ ๋ ๊ท์น์ ์ถฉ๋ํ์ง ์๋๋ค:
|
|
176
|
+
์น์ ์ฐธ์กฐ๊ฐ ์ด๋ ๋ถ๋ชจ๋ฅผ ๋ง๋ค์ง ์๊ธฐ ๋๋ฌธ์ด๋ค.
|
|
177
|
+
|
|
178
|
+
'์์ง์ด๋ ๋ถํ์ ์ ์ง ์์น๋ฅผ ์ฐธ์กฐํ์ง๋ง ์ด๋์ ๋ฐ๋ฅด์ง ์์'์ ๋ณ๋์ inheritance ์ค์์น๋ก
|
|
179
|
+
๋ฃ์ง ์๋๋ค. ๊ณ ์ ๊ธฐ์ค frame์์ ์ ์ง ์์น ์์ ์์ฑํ๋ค.
|
|
180
|
+
์ด ํํ์ด ์ค์ ์์
์์ ๊ณผ๋ํ๊ฒ ๋ณต์กํ์ง ๊ฒ์ฆํ๊ณ ๋์ ํ์ฅ์ ๊ฒฐ์ ํ๋ค.
|
|
181
|
+
world/viewport ๊ณ ์ ์ ์ฌ์ฌ์ฉ Figure ๋ด๋ถ ๋ฐฐ์น์ ๊ตฌ๋ณํด scene ๊ณ์ธต์ ๋๋ค.
|
|
182
|
+
|
|
183
|
+
## 6. ๋์ผ ์๋ฆฌ๋ก ๋ค์ฏ ์ฌ๋ก๋ฅผ ํํํ๋๊ฐ
|
|
184
|
+
|
|
185
|
+
| ์ฌ๋ก | ์น์ ์ ์ | ๋ฐฐ์น ๊ธฐ์ค | ์ถ๊ฐ runtime ๋ชจ๋ |
|
|
186
|
+
| --- | --- | --- | --- |
|
|
187
|
+
| ๋จ๋
์์ | ์์ ๋๋ ์
๋ ฅ ์น์ ์ฐธ์กฐ | Figure ์์ | ์์ |
|
|
188
|
+
| ๋ฌธํ+๋ ๋ฌธ์ง | opening ๊ณต์ , ๋ฌธ ํญ=(openingWidthโ2cโg)/2, ๋๊ป ์์ | ๋ฌธํ opening frame | ๋ slider |
|
|
189
|
+
| ๋จํ | ์์ ์น์ | ๋ฌธํ top feature | ์์ |
|
|
190
|
+
| ๋กค๋ฌ | radius ์์, length=๋ ์ง์ง๋ฉด ๊ฑฐ๋ฆฌโ์ฌ๋ฐฑ | ์ง์ง frame | ํ์ ์ hinge |
|
|
191
|
+
| ์ ๋ฐ | ํ ๋๊ป ์์, ์ธต๊ฐ ๋์ด๋ ๊ณ ์ ๊ฐ์์ ๋ถํ ์ | ๋์ผํ ๊ธฐ์ค frame | ์์ |
|
|
192
|
+
|
|
193
|
+
๋ฌธ์ง์ q=1์์ ๋ด์ธก ๋์ด ๊ฐ๊ตฌ๋ถ ๋์ ๋์ด๋๋ก travel=(openingWidthโg)/2๋ค.
|
|
194
|
+
ํ ๋๊ป/๋จํ ํฌ๊ธฐ/๋กค๋ฌ ๋ฐ์ง๋ฆ์ ๋ถ๋ชจ์ ๋ฐฐ์จ์ด ์๋๋ผ ์์ ์ ์น์ ์ ์๋ก ์ ์ง๋๋ค.
|
|
195
|
+
๋ฌธํ ํญ ๋ณ๊ฒฝ์ด ๋ถ์ฐฉ ์์น์ ๋ฐ์๋๋ ๊ฒ์ feature๊ฐ ๊ฐ์ ์น์๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ด๋ค.
|
|
196
|
+
|
|
197
|
+
๊ฐ ์ฌ๋ก๋ฅผ ํ๋์ ๊ณตํต evaluator๋ก ์คํํด์ผ ํ๋ค.
|
|
198
|
+
์ฌ๋ก๋ณ ํ๋์ฝ๋ฉ ๊ณ์ฐ์ ๋ฐ๋ก ์คํํ ๊ฒ๋ง์ผ๋ก ์ต์ ๋ชจ๋ธ์ ์ถฉ๋ถ์ฑ์ ์ฃผ์ฅํ์ง ์๋๋ค.
|
|
199
|
+
์ค์ ๋๋ผ์ด๋ฃธ/๋กค ํ๋ ์ค revision์ ์ ํ ๊ฒ์ฆ์ ์์ง ์๋ค.
|
|
200
|
+
|
|
201
|
+
## 7. ๋จ์์ฑ์ด ๋ณด์ฅํ๋ ๊ฒ๊ณผ ๋ณด์ฅํ์ง ์๋ ๊ฒ
|
|
202
|
+
|
|
203
|
+
**๊ตฌ์ฑ์ ์กด์ฌยท์ ์ผ์ฑ:** ์ ํจ ์ฐธ์กฐ, DAG, ์ ํจ provider ์ ์์ญ์ด๋ฉด ์์ ์์๋ก ๊ฐ์ ๊ณ์ฐํ๋ค.
|
|
204
|
+
๊ฐ ๊ฐ์ ์ ์๊ฐ ํ๋์ด๊ณ ๊ฐ ํจ์๊ฐ ๊ฒฐ์ ์ ์ด๋ฏ๋ก ๊ฒฐ๊ณผ๋ ์ ์ผํ๋ค.
|
|
205
|
+
์ผ๋ฐ ์ ์ฝ ๋ฌธ์ ์ ํด๋ฅผ ์ฐพ์๋ค๋ ์๋ฏธ๊ฐ ์๋๋ค.
|
|
206
|
+
|
|
207
|
+
**๋ฒ์:** ์ ์ง ํ์ ์ด ์์์ด๊ณ ๋ชจ๋ ๊ธธ์ด ์ ์๊ฐ ์ํ์ด๋ฏ๋ก ์ ์ง frame ์์น๋ ์ํ์ด๋ค.
|
|
208
|
+
์ง์ก๋ฉด์ฒด ์
๋ ฅ ๋ฒ์์์ ์ํ ๋ถ๋ฑ์์ ๊ทน๊ฐ์ ๊ฐ ๊ณ์ ๋ถํธ๋ก ๊ตฌํ ์ ์๋ค.
|
|
209
|
+
๋ถ๋์์ ๊ตฌํ์ ๋ณด์์ ์ค์ฐจ ๊ฒฝ๊ณ๊ฐ ์์ผ๋ฉด ์ธ์ฆ๋ ์ ๋ฒ์ ์ฆ๋ช
์ผ๋ก ํ์ํ์ง ์๋๋ค.
|
|
210
|
+
|
|
211
|
+
**๊ณต๊ฐ ๋ถ์กฑ:** size<์ต์ ์๊ตฌ๋ผ๋ฉด ํ์์ ์ฐ๊ทธ๋ฌ๋จ๋ฆฌ๊ฑฐ๋ ๊ด๊ณ๋ฅผ ํ์ง ์๋๋ค.
|
|
212
|
+
'๋ฌธ ํญ 80์ด ํ์ํ๋ฐ ํ์ฌ ํญ์ 60'์ฒ๋ผ ๋ชจ์๋ ์น์๋ฅผ ๋ณด๊ณ ํ๋ค.
|
|
213
|
+
UI๋ ์์ธ ์
๋ ฅ์ ์์ ํ๋ ํ๋ณด๋ฅผ ๋ง๋ค ์ ์์ง๋ง evaluator๊ฐ ์ ํธ๋๋ฅผ ์ถ์ธกํ์ง ์๋๋ค.
|
|
214
|
+
|
|
215
|
+
**๋ณด์ฅํ์ง ์๋ ๊ฒ:** ์์ 3D packing, ์ถฉ๋ ์๋ ์ด๋, ๋น๋ณผ๋ก ๋ฉด ์ ์ด,
|
|
216
|
+
์๋ ๋ฏธ์ ๋ฐฐ์น, ์์ ์ฐ๋ฆฝ ์ ์ฝ, ํฌ๊ธฐ์ ๋ฐ๋ฅธ ์๋ ๊ฐ์ ๋ณ๊ฒฝ.
|
|
217
|
+
์ด๋ค์ ๋ฏธ์ง์์ผ๋ก ๋ช
์ํ๋ ๊ฒ์ ๋จ์์ฑ์ ๋๊ฐ๋ค. ์ฌ์ฉ์์ ํต์ฌ ์ฌ๋ก์ ํ์๋ผ๋ฉด ๋ฒ์๋ฅผ ์ฌ๊ฒํ ํ๋ค.
|
|
218
|
+
|
|
219
|
+
## 8. r1 ๋ฐ๋ก๋ฅผ ์ด๋ป๊ฒ ์ทจ๊ธํ๋๊ฐ
|
|
220
|
+
|
|
221
|
+
1. auto Grid ๋ค์ค span: 3 tracks, ๊ฐ min=10, xโ+xโโฅ100, xโ+xโโฅ100.
|
|
222
|
+
r1 ๊ฒฐ๊ณผ [50,70,30]์ 150์ด์ง๋ง [10,90,10]์ด๋ฉด 110์ด๋ค.
|
|
223
|
+
r2๋ ์ด ๋ถ๋ฑ์ ์งํฉ์ ์๋ ๋ฐฐ์น ์
๋ ฅ์ผ๋ก ๋ฐ์ง ์๋๋ค. ํด๊ฒฐํ๋ค๊ณ ์ฃผ์ฅํ์ง ์๋๋ค.
|
|
224
|
+
๋ช
์์ ์ธ ์นธ ์น์/๋ถํ ์๋๋ฅผ ์์ฑํ๊ฑฐ๋ ํฅํ ๋ณ๋ ์ ์ฝ ๊ธฐ๋ฅ์ ํ์์ฑ์ ๊ฒํ ํ๋ค.
|
|
225
|
+
2. auto ๋ถ๋ชจ์ ์์ basis=0/min=100 ๋ ๊ฐ: ๋ถ๋ชจ๋ 0, ์์์ ํฉ๊ณ200.
|
|
226
|
+
r2๋ ์ธก์ ๊ณผ ๋ฐฐ๋ถ์ด๋ผ๋ ๋ ํฌ๊ธฐ ์ ๋ณธ์ ๋์ง ์๋๋ค. ๋ถ๋ชจ ๊ธธ์ด๋ฅผ child1+child2๋ก
|
|
227
|
+
์ ์ํ๊ฑฐ๋ ์์ ์น์๋ฅผ ๋ถ๋ชจ์์ ์ ์ํ๋ค. ์์ชฝ ๋ฐฉํฅ์ ๋์์ ์ฐ๋ฉด cycle ์ง๋จ์ด๋ค.
|
|
228
|
+
3. slot size์ geometry fixed/stretch writer ์ถฉ๋: slot/fit ์ฒด๊ณ๋ฅผ ์ ๊ฑฐํด ์ด ์ถฉ๋์ ์๋ค.
|
|
229
|
+
๋์ width์ radius์ฒ๋ผ ์๋ฏธ์ ์ผ๋ก ์ค๋ณต๋๋ geometry ์
๋ ฅ์ provider schema์์ ๊ธ์งํด์ผ ํ๋ค.
|
|
230
|
+
|
|
231
|
+
## 9. ์์ฐยทUXยท์ฑ๋ฅ ์ถํ ์กฐ๊ฑด
|
|
232
|
+
|
|
233
|
+
- ์คํ ์ ๋ณธ๊ณผ ํ์ geometry, ๊ฒ์ฌ, 2D/3D๊ฐ ๊ฐ์ resolved dimensions/frames๋ฅผ ์ฌ์ฉํ๋ค.
|
|
234
|
+
- ๊ฐ DAG/feature frame์ ๋ฐ๋์ scene node๋ก ๋ง๋ค์ง ์๋๋ค. compile์์ ์ ๋ฆฌํ๋ค.
|
|
235
|
+
- compile์ ์ ์ ๋ณ๊ฒฝ, dimension resolve๋ ํฌ๊ธฐ ๋ณ๊ฒฝ, pose๋ ์ํ ๋ณ๊ฒฝ ๋ ์ํํ๋ค.
|
|
236
|
+
- ๋์ผ ์น์/์ฌ์ง/์ด๋์ ๋ณํฉยท๊ณต์ ๊ฐ๋ฅ์ฑ์ ์ค์ renderer์์ ์ธก์ ํ๋ค.
|
|
237
|
+
- v2โv3 ๋ณํ์ ์๋ณธ ๋ณด์กด, id/์ธ๋ถ binding ๋์, ์ธํ ์ฐจ๋ถ, ์๋ ์ ํ์ ํฌํจํ๋ค.
|
|
238
|
+
- ์ Figure๋ ๋
๋ฆฝ ์ํ์์ ์์ํ๊ณ ์คํจํ ํ๋ณด๋ ๊ธฐ์กด ์ฅ๋ฉด์ ๋ง๋ถ์ด์ง ์๋๋ค.
|
|
239
|
+
- typed edit๋ sourceHash ๊ฒ์ฌ, ์์ ์ ์ฉ, undo, ์ฌ์ก์ ๋ฉฑ๋ฑ์ฑ์ ๊ฐ์ถ๋ค.
|
|
240
|
+
- ๋ฐํ ์ ์ฑ
์ invalid / assertion violation / unverified / advisory๋ฅผ ๊ตฌ๋ณํ๋ค.
|
|
241
|
+
- ์ ์ฅ ์คํจ์ ๊ฒ์ฆ ๋ฏธ์๋ฃ๋ฅผ '์๋ต ์์'์ผ๋ก ์จ๊ธฐ์ง ์๋๋ค.
|
|
242
|
+
- ๊ณ ๊ธ ์ ํธ์ง ์์ด ๋ํ ์ฌ๋ก๋ฅผ ๋ง๋ค๊ณ ์์ ํ๋ ์์
์๋ฅผ ์ค์ ๋ก ์ธก์ ํ๋ค.
|
|
243
|
+
|
|
244
|
+
## 10. ๋ค์ ํ์ ๊ธฐ์ค
|
|
245
|
+
|
|
246
|
+
์ด ํ๋ณด๋ฅผ ํ์ ํ ์กฐ๊ฑด์ ๊ฐ๋
์๊ฐ ์ ๋ค๋ ์ฌ์ค๋ง์ด ์๋๋ค.
|
|
247
|
+
|
|
248
|
+
1. ํ๋์ ์น์/๋ฐฐ์น evaluator๋ก ์ ๋ค์ฏ ์ฌ๋ก์ ํ์ ยท์ค์ฒฉยท์ด๋์ ์ฒ๋ฆฌํ๋ค.
|
|
249
|
+
2. ๊ธฐ์กด primitive/feature catalog์์ ์์์
์์ธ๊ฐ ์ผ๋ง๋ ํ์ํ์ง ํ์ธํ๋ค.
|
|
250
|
+
3. '๋ค๋ฅธ ๋ฉด์ ๋ถ์ด๊ธฐ', '์๋จ ์ ์งํ๋ฉฐ ์๋ ๋์ถ ์ ๊ฑฐ', 'ํฌ๊ธฐ ๋ณ๊ฒฝ'์ด ์ผ๊ด๋ UI ํธ์ง์ผ๋ก ๋๋ค.
|
|
251
|
+
4. ๊ธฐ์กด ์์ฐ์ ๋ฐ๊พธ๊ธฐ ์ํด ์ฌ์ฉ์์๊ฒ ์์์ ์ฐ๊ฒ ํ์ง ์๋๋ค.
|
|
252
|
+
5. ์ฑ๋ฅยท๋ฐฐํฌ ํธํ์ฑยท์ ์ฒด schema๋ ๊ฒ์ฆ ์ ๊น์ง ์๋ฃ๋ก ํ์ํ์ง ์๋๋ค.
|
|
253
|
+
|
|
254
|
+
ํ์ฌ ์ํ: ์ต์ ์คํ ๊ณ์ฝ ํ๋ณด๋ฅผ ์์ฑํ๊ณ ์์น ์์ ๋ฅผ ๊ฒ์ฆํ๋ ๋จ๊ณ.
|
|
255
|
+
์ปจํ
์ด๋ ๋ฐฉ์๋ณด๋ค ๋ฐ๋์ ์ฐ์ํ๋ค๋ ๊ฒฐ๋ก ์ด๋ ์ค์ ์ ํ ๋ถ๋์ด ํด๊ฒฐ๋๋ค๋ ๊ฒฐ๋ก ์ ๋ด๋ฆฌ์ง ์๋๋ค.
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
# V3 ์ฐ์ฐยทํ์ ๊ณ์ฝ โ ์ฒซ ์คํ ๊ฐ๋ฅํ subset
|
|
2
|
+
|
|
3
|
+
> ํ์ฌ ๊ตฌํยท๊ฒ์ฆยท์ ํ ์ฐ๊ฒฐ ์ํ๋ [V3 ํตํฉ ํํฉ](v3-status.md)์ ๋ฐ๋ฅธ๋ค. ๋ณธ๋ฌธ์ ๋จ๊ณ๋ณ ์ฐ๊ตฌ/๊ฒ์ฆ ๊ธฐ๋ก์ ์ ํ ์ ์ฒด ์๋ฃ ์ ์ธ์ด ์๋๋ค.
|
|
4
|
+
|
|
5
|
+
ํ์: [์ขํ๊ณ ํ์
๊ณผ ๊ณต๊ฐ ์์กด ๊ทธ๋ํ ํตํฉ](v3-spatial-contracts.md).
|
|
6
|
+
์๋๋ ์ต์ด scalar ๋จ๊ณ์ ๊ธฐ๋ก์ด๋ฉฐ, ํ์ฌ ํ์ฅ ๋ฒ์๋ ํ์ ๋ฌธ์๋ฅผ ๋ฐ๋ฅธ๋ค.
|
|
7
|
+
|
|
8
|
+
[r3 ํต์ฌ ์๋ฏธ๋ก ](v3-core-semantics.md)์ ๊ตฌํํ๋ ์ฒซ ๋จ๊ณ๋ค.
|
|
9
|
+
์ํ: scalar ์ปดํ์ผ๋ฌ ์คํ. ์ ์ V3 ์ ์ฒด schema๋ ์ ํ runtime์ด ์๋๋ค.
|
|
10
|
+
์์คํ
์ค๊ณ ์ ์ฐจ์ ๋ฐ๋ผ ์ ์ ์ค๋ฅ, ์
๋ ฅ ์์กด ์ค๋ฅ, ๋ฏธ์ง์ ๊ธฐ๋ฅ์ ๊ตฌ๋ถํ๋ค.
|
|
11
|
+
|
|
12
|
+
## 1. ์คํ ๊ตฌ์กฐ
|
|
13
|
+
|
|
14
|
+
`docs/prototypes/v3-typed-plan.mjs`๋ `compile(source)`์ ๊ทธ ๊ฒฐ๊ณผ์ `evaluate(inputs)`๋ฅผ ์ ๊ณตํ๋ค.
|
|
15
|
+
๊ธฐ์กด ๋ฌด๋จ์ `v3-kernel.mjs`์ ๋
๋ฆฝ์ด๋ค. ์์ง ๋ ์์ง์ ์ฐ๊ฒฐํ์ง ์์๋ค.
|
|
16
|
+
|
|
17
|
+
```text
|
|
18
|
+
์ ์ ์ ์ธ โ ๊ตฌ์กฐ/๋จ์/์ถ๋ ฅ ์์ ๊ถ/์ฐธ์กฐ/cycle ๊ฒ์ฌ โ ๋ถ๋ณ snapshot ์คํ ๊ณํ
|
|
19
|
+
์ค์ ์
๋ ฅ โ ๋จ์ ์ ๊ทํ โ ์ ์์ญ ๊ฒ์ฌ + ์ฐ์ฐ โ ๊ฐ๊ณผ geometry descriptor
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
๋ฐํ geometry๋ ์ค์ mesh๊ฐ ์๋๋ผ provider/version๊ณผ ํด๊ฒฐ๋ ์น์๋ค.
|
|
23
|
+
์ปดํ์ผ ํ ์๋ณธ ์ ์ธ์ ๋ณ๊ฒฝํด๋ ์ด์ ์คํ ๊ณํ์ ์ํฅ์ ๋ฐ์ง ์๋๋ค.
|
|
24
|
+
์คํจํ ํ๊ฐ์์ ๋ถ๋ถ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๊ฑฐ๋ ๋ค์ ํ๊ฐ์ ๊ฐ์ ๋จ๊ธฐ์ง ์๋๋ค.
|
|
25
|
+
|
|
26
|
+
## 2. ์ ์ธ ๊ตฌ์กฐ
|
|
27
|
+
|
|
28
|
+
```json
|
|
29
|
+
{
|
|
30
|
+
"version": "r3-scalar-1",
|
|
31
|
+
"inputs": [{"id":"width","unit":"cm","min":1,"max":1000}],
|
|
32
|
+
"constants": [
|
|
33
|
+
{"id":"zero","unit":"mm","value":0},
|
|
34
|
+
{"id":"margin","unit":"mm","value":10}
|
|
35
|
+
],
|
|
36
|
+
"nodes": [{
|
|
37
|
+
"id":"span",
|
|
38
|
+
"op":"between@1",
|
|
39
|
+
"args":["zero","width","margin","margin"],
|
|
40
|
+
"outputs":{"length":"usableLength","center":"center"}
|
|
41
|
+
}]
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
ํ์ ํ๋ ๋๋ฝ๊ณผ ์ ์ ์๋ ํ๋๋ฅผ ๊ฑฐ์ ํ๋ค. node id์ ๊ฒฐ๊ณผ port id๋ ๊ฐ๊ฐ ๊ณ ์ ํ๋ค.
|
|
46
|
+
์ถ๋ ฅ ํฌํธ๋ ์ธ๋ถ ์
๋ ฅ/์์/๋ค๋ฅธ ๊ฒฐ๊ณผ ํฌํธ์ ์ด๋ฆ์ ๊ณต์ ํ ์ ์๋ค.
|
|
47
|
+
JSON Schema ํ์ผ๊ณผ ๋ฒ์ฉ ๊ฒ์ฆ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ถ๊ฐํ ๊ฒ์ ์๋๋ฉฐ, ์ง์ ๊ตฌ์กฐ ๊ฒ์ฌ๋ฅผ ๊ตฌํํ๋ค.
|
|
48
|
+
args ์์์ output ์ด๋ฆ์ ๋ฒ์ ๋ณ ์ฐ์ฐ ๊ณ์ฝ์ด๋ค. ์ ์ฒด ์ฐ์ฐ catalog ์์ฑ ์ ์ ์ ํ๋ ๊ตฌ์กฐ๋ค.
|
|
49
|
+
|
|
50
|
+
## 3. ๋จ์์ ์ฐจ์
|
|
51
|
+
|
|
52
|
+
| ์
๋ ฅ ๋จ์ | ์คํ ๋จ์/๋ฐฐ์จ |
|
|
53
|
+
| --- | --- |
|
|
54
|
+
| mm, cm, m | mm: 1, 10, 1000 |
|
|
55
|
+
| rad, deg | rad: 1, ฯ/180 |
|
|
56
|
+
| s | s |
|
|
57
|
+
| ratio, percent | ๋ฌด์ฐจ์: 1, 0.01 |
|
|
58
|
+
|
|
59
|
+
์
๋ ฅ min/max๋ ์ ์ธ๋ ์
๋ ฅ ๋จ์๋ค. ํ๊ฐ ์ ๊ฐ์ ๋จ์๋ก ๋ฒ์๋ฅผ ํ์ธํ ๋ค ์ ๊ทํํ๋ค.
|
|
60
|
+
๊ฒฐ๊ณผ ํฌํธ์ ํ์
์ `[๊ธธ์ด ์ง์, ๊ฐ๋ ์ง์, ์๊ฐ ์ง์]`๋ก ์ถ๋ก ํ๋ค.
|
|
61
|
+
๊ฐ๋๋ ์ฐจ์ ๊ฒ์ฌ์์ ๋ฌด์ฐจ์ ratio์ ๊ตฌ๋ณํ๋ค. ๋ฉด์ ์ `[2,0,0]`์ฒ๋ผ ํ์๋๋ค.
|
|
62
|
+
|
|
63
|
+
- add: ๊ฐ์ ์ฐจ์๋ผ๋ฆฌ๋ง.
|
|
64
|
+
- mul/div: ์ฐจ์ ์ง์ ํฉ/์ฐจ.
|
|
65
|
+
- sin: ๊ฐ๋ ์
๋ ฅ๋ง, ๊ฒฐ๊ณผ ratio.
|
|
66
|
+
- bare number๋ฅผ ์๋ฌต์ ์ผ๋ก mm๋ก ํด์ํ์ง ์๋๋ค. ์์์๋ unit์ด ํ์๋ค.
|
|
67
|
+
|
|
68
|
+
์์ง ์ ์ ๊ฐ์ยทboolยทvectorยทpointยทframe ํ์
, d/q ๊ตฌ๋ถ์ ๊ตฌํํ์ง ์์๋ค.
|
|
69
|
+
๋ฐ๋ผ์ ํ์ฌ ๊ฒ์ฆ๊ธฐ๋ก ๊ณต๊ฐ ์ขํ๊ณ ํผ์ฉ์ด๋ topology์ ์ํ ์์กด๊น์ง ์ก์๋ค๊ณ ์ฃผ์ฅํ์ง ์๋๋ค.
|
|
70
|
+
|
|
71
|
+
## 4. ์ฐ์ฐ catalog
|
|
72
|
+
|
|
73
|
+
| ์ฐ์ฐ | ์
๋ ฅ ์์ | ์ถ๋ ฅ | ๊ฐ ์์กด ์คํจ |
|
|
74
|
+
| --- | --- | --- | --- |
|
|
75
|
+
| add@1 | a,b (๋์ผ ์ฐจ์) | value=a+b | overflow/nonfinite |
|
|
76
|
+
| mul@1 | a,b | value=a*b | overflow/nonfinite |
|
|
77
|
+
| div@1 | a,b | value=a/b | b=0, overflow/nonfinite |
|
|
78
|
+
| sin@1 | angle | value=sin(angle) | nonfinite |
|
|
79
|
+
| between@1 | low,high,marginLow,marginHigh (๊ธธ์ด) | length,center | ์์ ์ฌ๋ฐฑ, lengthโค0 |
|
|
80
|
+
| box@1 | width,height,depth (๊ธธ์ด) | xMin,xMax,yMin,yMax,zMin,zMax | ์น์โค0 |
|
|
81
|
+
| cylinder@1 | radius,length (๊ธธ์ด) | start,end,radialMin,radialMax | ์น์โค0 |
|
|
82
|
+
|
|
83
|
+
`between`์ length์ center๋ฅผ ํจ๊ป ์์ ํ๋ค. ๋ค๋ฅธ node๊ฐ length๋ง ๋ค์ ์ฐ๋๋ผ๋
|
|
84
|
+
`DUPLICATE_WRITER`๋ค. ์ํ์ node ๊ฒฝ๋ก์ ํจ๊ป `CYCLE`๋ก ๋ณด๊ณ ํ๋ค.
|
|
85
|
+
|
|
86
|
+
```text
|
|
87
|
+
length = high-low-marginLow-marginHigh
|
|
88
|
+
center = (low+high+marginLow-marginHigh)/2
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
length=0๋ ๊ฑฐ์ ํ๋ค. ๋ถ์กฑ๋์ด 0์ธ ๊ฒฝ์ฐ์๋ 'positive length required'๋ฅผ ๋ช
์ํ๋ค.
|
|
92
|
+
์กฐ์ฉํ clamp, ์ฐ์ ์์ ๊ธฐ๋ฐ ๋ฎ์ด์ฐ๊ธฐ, ์ด๊ธฐ๊ฐ์ ์์กดํ ๋ฐ๋ณต ์๋ ด์ ์๋ค.
|
|
93
|
+
|
|
94
|
+
## 5. provider ๊ณ์ฝ
|
|
95
|
+
|
|
96
|
+
### box@1
|
|
97
|
+
|
|
98
|
+
์ค์ฌ ์์ ์ ์ง์ก๋ฉด์ฒด๋ค. ์น์์ ยฑ๋ฐ์น์ ์ถ ์ขํ๋ฅผ ๊ฐ์ ์
๋ ฅ์์ ์์ฑํ๋ค.
|
|
99
|
+
feature ์ถ๋ ฅ์ local ๋ฉด์ **์ค์นผ๋ผ ์ขํ**์ด๋ฉฐ ์์ ํ ์ ํฅ feature frame์ ์๋๋ค.
|
|
100
|
+
round/hollow๋ ์ง์ํ์ง ์๋๋ค. ๊ธฐ์กด rect๋ฅผ ์ธํ ๊ทธ๋๋ก ๋ณํํ๋ค๊ณ ์ฃผ์ฅํ์ง ์๋๋ค.
|
|
101
|
+
|
|
102
|
+
### cylinder@1
|
|
103
|
+
|
|
104
|
+
์ด subset์ local Y์ถ ์ค๋ฆฐ๋๋ค. start/end๋ โlength/2,+length/2์ ์ถ ์ขํ,
|
|
105
|
+
radialMin/Max๋ โradius,+radius์ ๋ฐฉ์ฌ extent๋ค.
|
|
106
|
+
๋์ ๋ฒกํฐยท๋ฒ์ ยทtangent๋ฅผ ์์ง ๋ฐํํ์ง ์๋๋ค. radialMax๋ง์ผ๋ก ์์ ํ๋ฉด ๋ถ์ฐฉ์ ์ด ๊ฒฐ์ ๋์ง ์๋๋ค.
|
|
107
|
+
์ต์ข
provider์ ์ถ ๊ท์ฝ์ catalog ํตํฉ ์ ํ์ ํด์ผ ํ๋ฉฐ ์ด ์คํ ํธ์๋ก ๊ณ ์ ํ์ง ์๋๋ค.
|
|
108
|
+
|
|
109
|
+
geometry descriptor์ feature ์ขํ๊ฐ ๊ฐ์ ์ฐ์ฐ์ ๊ฒฐ๊ณผ์ด๋ฏ๋ก ๋ณ๋์ bounds๋ก ์น์๋ฅผ
|
|
110
|
+
๋ค์ ์ถ์ ํ์ง ์๋๋ค. ๊ทธ๋ ๋ค๊ณ ํ์ฌ mesh์ ์ผ์นํจ์ ๊ฒ์ฆํ ๊ฒ์ ์๋๋ค(mesh ๋ฏธ์์ฑ).
|
|
111
|
+
|
|
112
|
+
## 6. ์ค๋ฅ์ ์์
|
|
113
|
+
|
|
114
|
+
์ปดํ์ผ: SCHEMA, VERSION, ID, UNIT, TYPE, DUPLICATE_NODE, DUPLICATE_WRITER,
|
|
115
|
+
UNKNOWN_REFERENCE, CYCLE, OPERATOR, RANGE ๋ฐ ์ ์ธ ์ซ์์ NON_FINITE.
|
|
116
|
+
|
|
117
|
+
ํ๊ฐ: INPUT_RANGE, DOMAIN(0 ๋๋์
/์์ ์ฌ๋ฐฑ), NO_SPACE, GEOMETRY_DOMAIN,
|
|
118
|
+
์ฐ์ฐ ๊ฒฐ๊ณผ NON_FINITE, ์ค์ ์
๋ ฅ์ ๋๋ฝ/์ถ๊ฐ ํ๋.
|
|
119
|
+
|
|
120
|
+
๋ชจ๋ ์ค๋ฅ๋ code/path/detail์ ๊ฐ์ง๋ค. ์ด ๋ฉ์์ง๊ฐ ๊ทธ๋๋ก ์ต์ข
์ฌ์ฉ์ ๋ฌธ๊ตฌ๋ผ๋ ๋ป์ ์๋๋ค.
|
|
121
|
+
UI์์๋ ์ฐ์ฐ id๋ฅผ ๋ถํ/์๋ ์ด๋ฆ์ผ๋ก ์ฐ๊ฒฐํ๊ณ ์์ ํ ์
๋ ฅ์ ์ ์ํด์ผ ํ๋ค.
|
|
122
|
+
์ฌ๋ฌ ์ค๋ฅ๋ฅผ ํ๊บผ๋ฒ์ ๋ชจ์ผ๋ ์ง๋จ๊ธฐ์ ์ต์ ์ถฉ๋ ์งํฉ์ ๋ฏธ๊ตฌํ์ด๋ค.
|
|
123
|
+
|
|
124
|
+
## 7. ์คํ ์ฆ๊ฑฐ
|
|
125
|
+
|
|
126
|
+
```sh
|
|
127
|
+
node --test docs/prototypes/v3-typed-plan.test.mjs
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
9๊ฐ ๊ฒ์ฌ ํต๊ณผ:
|
|
131
|
+
|
|
132
|
+
1. 100๊ฐ์ง ํญ์์ cmโmm, ์๋ ์ฌ๋ฐฑ, center์ cylinder ๋์ ์ผ์น.
|
|
133
|
+
2. ๊ฐ๋/๊ธธ์ด ํผ์ฉ์ compile ์ค๋ฅ, ๊ณต๊ฐ ๋ถ์กฑ์ evaluate ์ค๋ฅ.
|
|
134
|
+
3. ๊ณฑ์
/๋๋์
์ ๋ฉด์ ยท๊ธธ์ด ์ถ๋ก , degโrad ์ผ๊ฐํจ์.
|
|
135
|
+
4. ์๋น์จ percentโratio, ์ง๋ฆ ๋ณํ, ์์ ๋ฐ์ง๋ฆ ๊ฑฐ์ .
|
|
136
|
+
5. ์ค๋ณต writer, ์ํ, ์ ์ ์๋ ์ฐธ์กฐ.
|
|
137
|
+
6. ์ฐ์ฐ ๋ฒ์ ๊ณผ ํ๋ ๋๋ฝ/์ถ๊ฐ ๊ฑฐ์ .
|
|
138
|
+
7. 0 ๋๋์
, ์
๋ ฅ ๋๋ฝยท์ถ๊ฐยทNaN.
|
|
139
|
+
8. ์ ์ธ ์์ ๋ณ๊ฒฝ๊ณผ snapshot ๋ถ๋ณ์ฑ, ์คํจ ํ ์ฌํ๊ฐ.
|
|
140
|
+
9. box ์น์์ ๋ฉด ์ขํ ์ผ์น.
|
|
141
|
+
|
|
142
|
+
## 8. ๋ค์ ํตํฉ ์กฐ๊ฑด
|
|
143
|
+
|
|
144
|
+
ํ์ฌ๋ scalar ํ์
๊ฒ์ฌ๋ฅผ ํต๊ณผํด๋ frame ๊ณ์ฐ์ ๋ณ๋ ์คํ๊ธฐ์ ์๋ค.
|
|
145
|
+
๋ค์ ๋จ๊ณ๋ **์ขํ๊ณ๊ฐ ํฌํจ๋ feature/connection ํ์
**์ ์ถ๊ฐํ๊ณ ํ๋์ ์์กด ๊ทธ๋ํ์
|
|
146
|
+
ํตํฉํ๋ ๊ฒ์ด๋ค. ๊ทธ ํ profile provider์ ๋ฐ๋ณต cardinality๋ฅผ ํ์ฅํ๋ค.
|
|
147
|
+
ํ๊ฐ์ ๊ฒ์ฌ๋ง ์์ผ๋ฏ๋ก ์ ์
๋ ฅ ์์ญ์ ์์ ์ฑ, floor ๊ฒฝ๊ณ, ์์น ์ค์ฐจ ๋ณด์ฅ์ ์์ง ์๋ค.
|
|
148
|
+
๋ถ์ ์
๋ ฅ์ ๋ํ ๋
ธ๋ ์ยท์ฌ๊ท ๊น์ดยท์์ ์์ฐ๋ ์ ํ ์ฑํ ์ ์ ํ์ํ๋ค.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# ์ ์ฌ๋ฌผ ๋ ๋ชจ๋ธ ์ ์ฒด ๋ถํ ์ถฉ๋ ๊ฒ์ฌ โ ์คํ v1
|
|
2
|
+
|
|
3
|
+
> ํ์ฌ ๊ตฌํยท๊ฒ์ฆยท์ ํ ์ฐ๊ฒฐ ์ํ๋ [V3 ํตํฉ ํํฉ](v3-status.md)์ ๋ฐ๋ฅธ๋ค. ๋ณธ๋ฌธ์ ๋จ๊ณ๋ณ ์ฐ๊ตฌ/๊ฒ์ฆ ๊ธฐ๋ก์ ์ ํ ์ ์ฒด ์๋ฃ ์ ์ธ์ด ์๋๋ค.
|
|
4
|
+
|
|
5
|
+
## ๋ฒ์
|
|
6
|
+
|
|
7
|
+
[์คํ ์ฝ๋](prototypes/v3-payload-collision.mjs)๋ ๊ณต๊ฐ/์ ์ด ๊ฒ์ฌ ๊ฒฐ๊ณผ์ ๋ณ๋ collision ํ์ ์ ๋ํ๋ค. **ํ์ฌ ์ํ์ payload ๋ ๋ชจ๋ ๋ชจ๋ธ ๋ถํ**์ ๊ฒ์ฌํ๋ค. ๋ชจ๋ธ ๋ถํ ์ํธ ๊ฐ ์ถฉ๋, ๋ค๋ฅธ ์ธ๋ถ ์์ฐ, ์์ง์ด๋ ๊ฒฝ๋ก ์ ์ฒด์ ์ฐ์ ์ถฉ๋, ๋ฌผ๋ฆฌ ์์ ์ฑ์ ๋ฒ์ ๋ฐ์ด๋ค. ๋ฐ๋ผ์ '์ ์ญ ์ถฉ๋ ์์ฑ'์ด๋ผ๊ณ ๋ถ๋ฅด์ง ์๋๋ค.
|
|
8
|
+
|
|
9
|
+
์ ์ด ๋์์ผ๋ก ์ ์ธ๋ ํฌํฌ๋ ์ถฉ๋ ๊ฒ์ฌ์์ ์ ์ธํ์ง ์๋๋ค. ๋ฉด ์ ์ด๊ณผ ๋ด๋ถ ๊ดํต์ ๊ตฌ๋ถํ๋ค. ๊ธฐ์กด geometryยทcapability ์ ์ธยท์ ํ ์๋ฒ๋ ๋ฐ๊พธ์ง ์๋๋ค.
|
|
10
|
+
|
|
11
|
+
## ์ํ๊ณผ ๋ฑ๊ธ
|
|
12
|
+
|
|
13
|
+
OBB(ํ์ ์์) ๊ฐ ์ ์ ๋ถ๋ฆฌ์ถ ๊ฒ์ฌ(SAT)๋ฅผ ์ฌ์ฉํ๋ค. ์์ชฝ ์์์ ์ถ 6๊ฐ์ ์ถ ์ฌ์ด ์ธ์ 9๊ฐ๋ฅผ ๊ฒ์ฌํ๋ค. ๊ทผ๊ฑฐ: David Eberly์ [Dynamic Collision Detection using Oriented Bounding Boxes](https://www.geometrictools.com/Documentation/DynamicCollisionDetection.pdf)์ ์ ์ ์์ ๊ฒ์ฌ. ์ด๋ฒ ๊ตฌํ์ ์ฐ์ ์ถฉ๋ ๋ถ๋ถ์ ๊ตฌํํ์ง ์๋๋ค.
|
|
14
|
+
|
|
15
|
+
์ ๊ทํํ ํ๋ณด ์ถ L์์ ํฌ์ ๋ฐ๊ฒฝ์ `ฮฃ halfExtent[i] ร |axis[i]ยทL|`์ด๋ค. ์ค์ฌ ๊ฑฐ๋ฆฌ์ ํฌ์์ด ๋ ๋ฐ๊ฒฝ ํฉ๋ณด๋ค ํฌ๋ฉด ๋ถ๋ฆฌ๋๋ค. ๋ถ๋ฆฌ์ถ์ด ์์ ๋ ์ต์ ์ถ ๊ฒน์นจ์ด ํ์ฉ ์ค์ฐจ ์ด๋ด์ด๋ฉด ์ ์ด, ๊ทธ๋ณด๋ค ํฌ๋ฉด ๊ดํต์ผ๋ก ๋ถ๋ฅํ๋ค. ๋จ์ world AABB ๊ฒน์นจ์ ์ ๋ฐ ์ถฉ๋๋ก ์ทจ๊ธํ์ง ์๋๋ค.
|
|
16
|
+
|
|
17
|
+
| ๋ถํ ํ์ | ๊ฒฝ๊ณ๊ฐ ๋ถ๋ฆฌ๋จ | ๊ฒฝ๊ณ๊ฐ ๊ฒน์นจ |
|
|
18
|
+
|---|---|---|
|
|
19
|
+
| box | ๋น๊ดํต | OBB SAT๋ก ๋ฉด ์ ์ด/๊ดํต ๊ตฌ๋ถ |
|
|
20
|
+
| roundedBox, cylinder | ๋ณด์์ ๊ฒฝ๊ณ ๋ถ๋ฆฌ๋ก ๋น์ถฉ๋ ํ์ธ | ์ ๋ฐ ํ์ ๊ฒ์ฌ ๋ฏธ๊ตฌํ โ ๋ฏธ๊ฒ์ฆ |
|
|
21
|
+
| ๊ทธ ๋ฐ์ provider | ๋ฏธ๊ฒ์ฆ | ๋ฏธ๊ฒ์ฆ |
|
|
22
|
+
|
|
23
|
+
์ ์ฒด ์ํ๋ ํ์ธ๋ ๊ดํต ํ๋๋ผ๋ ์์ผ๋ฉด `failed`, ๊ดํต์ ์์ง๋ง ๋ฏธ๊ฒ์ฆ ์์ด ์์ผ๋ฉด `unverified`, ๋ชจ๋ ๋ถ๋ฆฌ/ํ์ฉ ์ค์ฐจ ๋ด ์ ์ด์ด๋ฉด `satisfied`๋ค. ์ด satisfied๋ **ํ์ฌ ์ํยท์ง์ scope์์ ์ ์๋ฏธํ ๊ดํต์ ์ฐพ์ง ๋ชปํ๋ค**๋ ๋ป์ด๋ฉฐ, ํ์คยท์์ ยท๋ฐ์นจ ์ ํฉ์ฑ ๋ณด์ฅ์ด ์๋๋ค.
|
|
24
|
+
|
|
25
|
+
๊ฑฐ๋ฆฌ ํ์ฉ ์ค์ฐจ๋ 1e-6mm๋ค. ๊ฑฐ์ ํํํ ์ถ์ ์ธ์ ๊ธธ์ด๊ฐ 0๋ณด๋ค ํฌ๊ณ 1e-12 ๋ฏธ๋ง์ด๋ฉด ์์น ๋ถํ์ค์ฑ์ผ๋ก ๋ฏธ๊ฒ์ฆ ์ฒ๋ฆฌํ๋ค. ๋ค๋ฅธ ์ ๋ขฐํ ์ ์๋ ์ถ์ด ๋ถ๋ฆฌ๋ฅผ ์ฆ๋ช
ํ๋ฉด ๋ถ๋ฆฌ ํ์ ์ ๊ฐ๋ฅํ๋ค. ์ถ๋ ฅ์ minimumAxisOverlap์ ๊ฒ์ฌ ์ถ์ ์ต์ ๊ฒน์นจ์ด๋ฉฐ, ์ ์ฒด ์ถฉ๋ ํด๊ฒฐ ๋ฐฉํฅ์ด๋ ๋ฌผ๋ฆฌ ์นจํฌ ๊น์ด solver ๊ฒฐ๊ณผ๋ผ๊ณ ํด์ํ์ง ์๋๋ค.
|
|
26
|
+
|
|
27
|
+
## ๊ฒ์ฆ
|
|
28
|
+
|
|
29
|
+
[ํ
์คํธ](prototypes/v3-payload-collision.test.mjs):
|
|
30
|
+
|
|
31
|
+
- ๋ถ๋ฆฌ/์ ์ด/๊ดํต/์์ ํฌํจ, ํ์ฉ ์ค์ฐจ ๊ฒฝ๊ณ, AABB๊ฐ ๊ฒน์น์ง๋ง OBB๋ ๋ถ๋ฆฌ๋ ๊ฒฝ์ฐ.
|
|
32
|
+
- ์ผ๋ฐ์ ์ธ 3D ํ์ ์ ๊ฒฐ์ ์ ๋์ **1,000์**์ ๊ธฐ์กด Three.js OBB ๊ตฌํ๊ณผ ๋์กฐ: ๊ต์ฐจ174ยท๋ถ๋ฆฌ826, ์ ๋ถ ์ผ์น. ๋ ๊ตฌํ์ ๊ฐ์ SAT ์๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฏ๋ก ์ํ์ ์ ๋ฒ์ ์ฆ๋ช
์ด ์๋๋ค.
|
|
33
|
+
- ํฌํฌ ๊ธธ์ด3 ร ์์น5 ร ๋ด๋ฐ3 ร ์ ์ฌ๋ฌผ yaw5 = **225๊ฐ ์ํ**, ๋ถํ ์ **4,500๊ฐ** ๊ฒ์ฌ.
|
|
34
|
+
- ๋์ด500mm ์ ์ฌ๋ฌผ์ ํ๋จ ํฌํฌ์ ์ ์ดํ๋ฉด์ ์๋จ ํฌํฌ๋ฅผ ๊ดํตํ๋ค. ์ ์ด์ satisfied, ์ถฉ๋์ failed๋ก ๋ถ๋ฆฌ ํ์ .
|
|
35
|
+
- ๋ฅ๊ทผ ๋ณธ์ฒด์ ๊ฒฝ๊ณ ๋ด๋ถ์ ๋ค์ด๊ฐ๋ ์์ payload๋ ์๋ ํต๊ณผํ์ง ์๊ณ ๋ฏธ๊ฒ์ฆ.
|
|
36
|
+
- ์๋ชป๋ OBBยท์ ๊ท์ง๊ต ์๋ฐ๊ณผ ๊ฑฐ์ ํํํ ์ถ์ ์์น ๋ถํ์ค์ฑ์ ๊ฒ์ฆ.
|
|
37
|
+
|
|
38
|
+
Chrome์์ `--collision` ์คํ ํ๋ฉด์ผ๋ก ์ ์ ๋ฐฐ์นยท์๋จ ํฌํฌ ๊ดํตยท๊ณต์ค ๋ถ์ ยท๋ฅ๊ทผ ๋ณธ์ฒด ๋ด๋ถ ๋ฐฐ์น๋ฅผ ์ง์ ํ์ธํ๋ค. ์ ์ด๊ณผ ์ถฉ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๋ก ํ์ํ๋ฉฐ ๊ดํตํ box ๋ถํ์ ๋ถ๊ฒ ํ์ํ๋ค. ์์ ์ ์ฌ๋ฌผ์ด ๋ถํฌ๋ช
๋ณธ์ฒด ์์ ๊ฐ๋ ค์ง๋ ์ฌ๋ก๋ ์์ผ๋ฏ๋ก ์คํฌ๋ฆฐ์ท๋ง์ผ๋ก ๋น์ถฉ๋์ ํ์ ํ์ง ์๋๋ค. ์์ ์ด๋ฏธ์ง: `/private/tmp/figure-v3-full-collision.png`.
|
|
39
|
+
|
|
40
|
+
## ๋จ์ ๊ตฌํ
|
|
41
|
+
|
|
42
|
+
๊ณก๋ฉด/์ผ๋ฐ ๋ฉ์ narrow phase, ๋ ๋์ ๊ท๋ชจ์ ์์น ์ ์ฑ
, ํํธ ๊ฐ ์๊ธฐ์ถฉ๋, ์์ง์ ๊ฒฝ๋ก ์ ์ฒด ๊ฒ์ฌ, ์์ ์ฑยท์ ์ด ํ์ฉ ์ ์ฑ
, ๋ฐ๋ณต ๋์ ์ฐธ์กฐ, ์ค์ ์ ํ UIยทAI ํตํฉ์ด ๋จ์ ์๋ค. ํ์ฌ ๋ชจ๋์ ์คํ ์ด๋ํฐ์ด๋ฉฐ ์ ํ์ ๋ฐํ ์ฐจ๋จ ์กฐ๊ฑด์ผ๋ก ์ฐ๊ฒฐํ์ง ์์๋ค.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# ์ ์ฌ๋ฌผ ๊ณต๊ฐยทํ๋ฉด ์ ์ด ๊ฒ์ฌ โ ์คํ v1
|
|
2
|
+
|
|
3
|
+
> ํ์ฌ ๊ตฌํยท๊ฒ์ฆยท์ ํ ์ฐ๊ฒฐ ์ํ๋ [V3 ํตํฉ ํํฉ](v3-status.md)์ ๋ฐ๋ฅธ๋ค. ๋ณธ๋ฌธ์ ๋จ๊ณ๋ณ ์ฐ๊ตฌ/๊ฒ์ฆ ๊ธฐ๋ก์ ์ ํ ์ ์ฒด ์๋ฃ ์ ์ธ์ด ์๋๋ค.
|
|
4
|
+
|
|
5
|
+
## ๊ตฌํ ๋ฒ์
|
|
6
|
+
|
|
7
|
+
[๊ฒ์ฌ ์ฝ๋](prototypes/v3-payload-fit.mjs)๋ ๊ธฐ์กด capability compiler๋ฅผ ๋ด๋ถ์์ ์คํํ๋ค. ์ธ๋ถ์์ ์กฐ์ํ ํ๋ฉด ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ ์ธ์ฆํ์ง ์๋๋ค. ์ด๋ฒ ๋จ๊ณ์์ ์ง์ํ๋ ๊ฒ์ **์์ ์ ์ฌ๋ฌผ ๋ฐ๋ฅ๊ณผ box ๋ถํ์ top ํ๋ฉด**์ด๋ค. ์ ์ฒด ๋ฌผ๋ฆฌยท์ถฉ๋ยท์์ ์ฑ solver๋ ์๋๋ค.
|
|
8
|
+
|
|
9
|
+
์
๋ ฅ์ binding ID, ๋ฌผ์ฒด ์ข
๋ฅ์ ์ ์ snapshot, ์์ ์์ ์น์(mm), binding ์ขํ๊ณ ๊ธฐ์ค ์ค์ฌ(mm), Y์ถ ํ์ ๊ฐ(deg)์ด๋ค. ๊ธฐ์ธ์ด์ง ์ ์ฌ๋ฌผ, ์์ ๋ฉ์, ๊ณก๋ฉด ๋ฐ์นจ, ํ์ง ์ ์ด์ ์ด ๊ฒ์ฌ ๋ฒ์ ๋ฐ์ด๋ค. ๋ชจ๋ ์ถ๊ฐ ํ๋์ ์๋ชป๋ ๊ฐ์ ๊ฑฐ๋ถํ๋ค.
|
|
10
|
+
|
|
11
|
+
## ๊ฒ์ฌ ๋ถ๋ฆฌ
|
|
12
|
+
|
|
13
|
+
### 1. ๊ณต๊ฐ ํฌํจ
|
|
14
|
+
|
|
15
|
+
binding์ centered-box region์ด ์์ ๋๋ง ๊ฒ์ฌํ๋ค. ํ์ ๋ payload์ 8๊ฐ ๊ผญ์ง์ ์ region ์ขํ๊ณ์์ ๊ฒ์ฌํ๋ค. ๋ณผ๋กํ ์์์ด๋ฏ๋ก ๋ชจ๋ ๊ผญ์ง์ ์ด ์์ ๋ฐ๊ณต๊ฐ ์์ ์์ผ๋ฉด ์ ์ฒด ์์๊ฐ ํฌํจ๋๋ค. region์ด ์์ผ๋ฉด `unverified`์ด๋ฉฐ ๋ฌดํ ๊ณต๊ฐ์ผ๋ก ์ฒ๋ฆฌํ์ง ์๋๋ค.
|
|
16
|
+
|
|
17
|
+
### 2. ์ค์ ๋ฐ์นจ๋ฉด ์ ์ด
|
|
18
|
+
|
|
19
|
+
๊ฒ์ฆ๋ ํ๋ฉด ์ถ์ฒ์์ ์ค์ box ํญยท๊น์ด๋ฅผ ๊ฐ์ ธ์จ๋ค. ์ ์ฌ๋ฌผ ๋ฐ๋ฅ์ ๋ค ๊ผญ์ง์ ์ ๊ฐ ๋ฐ์นจ๋ฉด์ ๋ก์ปฌ ์ขํ๊ณ๋ก ๋ณํํ๋ค.
|
|
20
|
+
|
|
21
|
+
- ๋ฐ๋ฅ๊ณผ ๋ฐ์นจ๋ฉด์ ๋ฒ์ ์ด ํํํ๊ณ ๊ฐ์ ์์ชฝ ๋ฐฉํฅ์ธ์ง ํ์ธํ๋ค.
|
|
22
|
+
- ๋ฐ๋ฅ ์ฌ๊ฐํ๊ณผ ๋ฐ์นจ๋ฉด ์ฌ๊ฐํ์ 2D polygon clipping์ผ๋ก ๊ต์ฐจํ๋ค. AABB ์ค์ฒฉ๋ง์ผ๋ก ์ ์ด ํ์ ํ์ง ์๋๋ค.
|
|
23
|
+
- ์์ ๊ต์ฐจ ๋ฉด์ ๊ณผ ๋ฐ๋ฅ ํ๋ฉด์ ๊ฐ๊ฒฉ์ ํจ๊ป ๊ฒ์ฌํ๋ค.
|
|
24
|
+
- ๋ช
์๋ ๋ชจ๋ ์ ์ด๋ฉด์ด ์กฐ๊ฑด์ ๋ง์กฑํด์ผ ์ ์ฒด contact ์ํ๊ฐ `satisfied`๋ค. ์ด๊ฒ์ ์ด๋ฒ '์์ชฝ ํฌํฌ ์ ์ด' ๊ฒ์ฌ ์ ์ฑ
์ด๋ฉฐ ์ผ๋ฐ ๋ค์ค ์ง์ง solver๋ฅผ ๋ปํ์ง ์๋๋ค.
|
|
25
|
+
|
|
26
|
+
์ง๋จ์ `ABOVE_SUPPORT`, `PENETRATES_SUPPORT_PLANE`, `NO_POSITIVE_CONTACT_AREA`, `PLANAR_CONTACT`๋ก ๋๋๋ค. ๋ชจ์๋ฆฌยท์ ์ ์ด์ ์์ ๋ฉด์ ์กฐ๊ฑด์ ๋ง์กฑํ์ง ์๋๋ค. ์ง์ํ์ง ์๋ ํ์/๋ฐฉํฅ์ `unverified`๋ค.
|
|
27
|
+
|
|
28
|
+
์คํ ์์น ํ์ฉ์ค์ฐจ๋ ๊ฑฐ๋ฆฌ 1e-6mm, ๋ฉด์ 1e-6mmยฒ, ๋ฒ์ ๋ด์ 1e-9์ด๋ฉฐ ๊ฒฐ๊ณผ์ ๊ฑฐ๋ฆฌยท๋ฉด์ ์ค์ฐจ๋ฅผ ๋ช
์ํ๋ค. ์์ฐ ํฌ๊ธฐ ์ ํ์ payload ์น์/์ค์ฌ ์ ๋๊ฐ 1e6mm, ํ์ ยฑ360ยฐ๋ค. ์ ํ์ ๋จ์ยท๊ท๋ชจ๋ณ ์์น ์ ์ฑ
์ผ๋ก ํ์ ํ ๊ฐ์ด ์๋๋ค.
|
|
29
|
+
|
|
30
|
+
### 3. ์๊ฒฉยท์ถฉ๋ยท์์ ์ฑ
|
|
31
|
+
|
|
32
|
+
๋ฌผ์ฒด ์ข
๋ฅ/์ ์ ์กฐ๊ฑด์ ๊ธฐ์กด eligibility ๊ฒฐ๊ณผ๋ก ๋ณ๋ ์ ์งํ๋ค. ์ ์ด์ด ์ฑ๊ณตํด๋ ํ์ฉํ์ง ์๋ ๋ฌผ์ฒด์ผ ์ ์๋ค.
|
|
33
|
+
|
|
34
|
+
์ ์ญ ์ถฉ๋, ๋ฌด๊ฒ์ค์ฌยทํ์ ๋ฐ๋ฅธ ์์ ์ฑ, ํ์คยท์ด์ ์์ ์ฑ์ ๊ณ์ **๋ฏธ๊ฒ์ฆ**์ด๋ค. ์๋ฅผ ๋ค์ด ๋์ด500mm ์ ์ฌ๋ฌผ์ ํ๋จ ํฌํฌ์ ์ ํํ ๋ฟ์ผ๋ฉด์ ์๋จ ํฌํฌ์ ๊ฒน์น ์ ์๋ค. ๋ฐ๋ฅ ์ ์ด ์ฑ๊ณต์ ์ ์ฒด ๋ฐฐ์น ์ฑ๊ณต์ผ๋ก ํฉ์น๋ boolean์ ์ ๊ณตํ์ง ์๋๋ค.
|
|
35
|
+
|
|
36
|
+
`evaluation.bindings[].checks.spatial`์ ๊ธฐ์กด ์ผ๋ฐ ํ์ ์ผ๋ก ๋ฏธ๊ฒ์ฆ์ ์ ์งํ๋ค. ์ ๊ฒ์ฌ๋ ๋ฐํ๊ฐ `inspection.containment`์ `inspection.contact`์์ ๊ฒ์ฌ ๋ฐฉ๋ฒ๊ณผ ํจ๊ป ๋ช
์์ ์ผ๋ก ์ฝ๋๋ค. ์ด ๊ฒฐ๊ณผ ๊ตฌ์กฐ๋ ์ ํ UI ์ฐ๊ฒฐ ์ ํตํฉํ ํ์๊ฐ ์์ผ๋ฉฐ ํ์ฌ ์ฑ๊ณต ํ์์ฉ ํตํฉ API๊ฐ ์๋๋ค.
|
|
37
|
+
|
|
38
|
+
## ๊ฒ์ฆ ๊ฒฐ๊ณผ
|
|
39
|
+
|
|
40
|
+
[ํ
์คํธ](prototypes/v3-payload-fit.test.mjs):
|
|
41
|
+
|
|
42
|
+
- ํฌํฌ ๊ธธ์ด3 ร ์์น3 ร ๋ด๋ฐ3 ร ์ ์ฌ๋ฌผ yaw3 = **81๊ฐ ์ํ**์ ์์ชฝ ํฌํฌ ์ ์ด.
|
|
43
|
+
- ํ์ 0์์๋ ํฌํฌ ํ๋๋น ๊ต์ฐจ ๋ฉด์ `90 ร forkLength`mmยฒ์ ์ผ์น.
|
|
44
|
+
- ๊ณต์ค ๋ถ์ , ํ๋ฉด ๊ดํต, ํ์ชฝ ์ง์ง ์ดํ, ์ ํํ ๋ชจ์๋ฆฌ ์ ์ด, ํฌํฌ ์ฌ์ด์ ๋์ธ ์ข์ ๋ฌผ์ฒด๋ฅผ ๊ฑฐ๋ถ.
|
|
45
|
+
- region ๋ด๋ถ์ ์์ง๋ง ๋ฌ ๋ฌผ์ฒด, ํ์ ํ region ๋ฐ์ผ๋ก ๋๊ฐ ๋ฌผ์ฒด๋ฅผ ๊ตฌ๋ณ.
|
|
46
|
+
- ์กฐ๋ฆฝ ์ ์ฒด๋ฅผ -65/30/90ยฐ ํ์ ํด๋ ์๋ ์ ์ด ๋ฉด์ ์ด ์ ์ง๋จ์ ํ์ธ. ์ค๋ ฅ ์์ ์ฑ์ ์ธ์ฆํ์ง ์์.
|
|
47
|
+
- ์ถฉ๋ ๊ฐ๋ฅ์ฑ์ด ์๋ ๋์ ๋ฌผ์ฒด์์๋ ์ถฉ๋/์์ ์ฑ์ ๋ฏธ๊ฒ์ฆ์ ์ ์ง.
|
|
48
|
+
- ์
๋ ฅ ์ค๋ฅยท๋ชจ๋ธ ๋ถ๋ณ์ฑยท์ค๋ฅ ํ ์ฌํ๊ฐ ๊ฒ์ฌ.
|
|
49
|
+
|
|
50
|
+
`node docs/prototypes/render-full-dryroom.mjs --payload`๋ก ๋ค ์ํ(์ ์ ์ ์ดยท150mm ๋ถ์ ยท20mm ๊ดํตยทํฌํฌ ์ฌ์ด)๋ฅผ Chrome์์ ๋ ๋๋งํ๊ณ ์ง์ ํ์ธํ๋ค. ์์ ์ด๋ฏธ์ง: `/private/tmp/figure-v3-full-payload.png`. ์ ํ ์๋ฒ/DB์ ์ค์ ์์ฐ์ ํธ์งํ์ง ์์๋ค.
|
|
51
|
+
|
|
52
|
+
## ๋ค์ ๊ฒ์ดํธ
|
|
53
|
+
|
|
54
|
+
์ด ์ ์ด ๊ฒ์ฌ๊ธฐ๋ ์ฌ๊ฐ ํ๋ฉด๊ณผ ์์๋ง ๋์์ผ๋ก ํ๋ค. ๋ฐ๋ณต ์์์ ํ๋ฉด ์ฐธ์กฐ๋ ๋ณ๋ ๋ชจ๋์์ ๊ตฌํํ๋ค. ๊ณก๋ฉดยทrounded profileยท์์ ๋ฉ์ ๋ฐ ๋ถ๋ถ ์ ์ด ์ ์ฑ
, ์ผ๋ฐ์ ์ธ ์ ์ญ ์ถฉ๋ยท์์ ์ฑ, ์ ํ UIยทAIยท์ ์ฅ ํตํฉ์ ๋จ์ ์๋ค. ์ด ๊ฒ์ฌ ๊ฒฐ๊ณผ๋ง์ผ๋ก '์ ์ฌ ๊ฐ๋ฅ'์ด๋ '์์ '์ผ๋ก ํ์ํ๋ฉด ์ ๋๋ค.
|
|
55
|
+
|
|
56
|
+
ํ์ ๋จ๊ณ๋ก [payload ๋ ๋ชจ๋ ๋ถํ์ ์ถฉ๋ ๊ฒ์ฌ](v3-payload-collision-validation.md)๋ฅผ ๋ณ๋ ์ถ๊ฐํ๋ค. ์์ ์์ ์ ๋ฐ OBB ๊ฒ์ฌ, ๊ณก๋ฉด์ ๋ณด์์ ๊ฒฝ๊ณ ๊ฒ์ฌ ํ ๋ฏธ๊ฒ์ฆ์ผ๋ก ๋ถ๋ฆฌํ๋ค. ๊ธฐ์กด ์ ์ด ๊ฒ์ฌ๊ธฐ๋ง ํธ์ถํ๋ฉด ์ถฉ๋์ ์ฌ์ ํ ๋ฏธ๊ฒ์ฆ์ด๋ค.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# ๋ฐ๋ณต ์์์ ๊ธฐ๋ฅ/ํ๋ฉด ์ฐธ์กฐ โ ์คํ ๊ฒ์ฆ
|
|
2
|
+
|
|
3
|
+
> ํ์ฌ ๊ตฌํยท๊ฒ์ฆยท์ ํ ์ฐ๊ฒฐ ์ํ๋ [V3 ํตํฉ ํํฉ](v3-status.md)์ ๋ฐ๋ฅธ๋ค. ๋ณธ๋ฌธ์ ๋จ๊ณ๋ณ ์ฐ๊ตฌ/๊ฒ์ฆ ๊ธฐ๋ก์ ์ ํ ์ ์ฒด ์๋ฃ ์ ์ธ์ด ์๋๋ค.
|
|
4
|
+
|
|
5
|
+
## ์ด๋ฒ ๊ตฌํ
|
|
6
|
+
|
|
7
|
+
์ ์ฒด ์ปจ๋ฒ ์ด์ด์ ๋ฐ๋ณต ๋กค๋ฌ๋ฅผ ์ ํํ๊ณ ๊ทธ ์ค์ ๋๋ฉด์ binding pose์ contact ํ๋ณด๋ก ์ฌ์ฉํ ์ ์๋๋ก ํ๋ค. ๋ฐ๋ณต template๋ฅผ ๋ณ๋ ๋ฉ์๋ก ๋ง๋ค๊ฑฐ๋ ์ ํํ ํญ๋ชฉ์ ํ ๋ฒ ๋ ๋ ๋๋งํ์ง ์๋๋ค.
|
|
8
|
+
|
|
9
|
+
- [์์ ](prototypes/v3-repeated-binding.mjs)
|
|
10
|
+
- [ํ
์คํธ](prototypes/v3-repeated-binding.test.mjs)
|
|
11
|
+
- [capability compiler](prototypes/v3-capability-plan.mjs)
|
|
12
|
+
|
|
13
|
+
ํ์ฌ ์ ์ธ ๋ฒ์ ์ `r3-capability-3`์ด๋ค. pose๋ ๊ธฐ์กด transform ์ถ๋ ฅ ID ๋๋ `{placement, feature}` ์ค ํ๋๋ค. ํ์๋ ์ค์ ํ๋ฉด ์ถ์ฒ ๊ฒ์ฌ์ ๊ฐ์ ๊ฒฝ๋ก๋ก ์ฒ๋ฆฌํ๋ค. V1/V2 ์
๋ ฅ์ ๋ฌต์์ ์ผ๋ก ๋ฐ๊พธ์ง ์๊ณ ๊ฑฐ๋ถํ๋ค. ์ ํ ๋ฐ์ดํฐ ๋ง์ด๊ทธ๋ ์ด์
์ ์ํํ ๊ฒ์ ์๋๋ค.
|
|
14
|
+
|
|
15
|
+
## ์์ ๊ถ๊ณผ ์ขํ
|
|
16
|
+
|
|
17
|
+
`select-item@1`์ collection โ repeat โ assembly โ template member ๊ฒฝ๋ก๋ฅผ ์ถ์ ํ๋ค. ์ ํ member๊ฐ ๊ทธ assembly์ ์ค์ ํฌํจ๋์ด ์์ด์ผ ํ๋ฉฐ, feature๊ฐ ํด๋น member์ ๋์ผ shape ์ถ๋ ฅ์ ์ฐธ์กฐํด์ผ ํ๋ค.
|
|
18
|
+
|
|
19
|
+
ํ๊ฐ ์ ์ ํํ occurrence์ ์ค์ pose์ local feature๋ฅผ ํฉ์ฑํ๋ค. ๊ฒฐ๊ณผ์ `targetGeometryId`์ contact์ `geometryId`๋ ๋ ๋๋ง๋๋ ๋ฐ๋ณต ๋ฉ์ ID๋ค. template ID๋ select ๋
ธ๋ ID๋ก ๋์ฒดํ์ง ์๋๋ค. ์์ ์ ๋กค๋ฌ end๋ ์๊ธฐ๋ฅ์ ํ๋ฉด ๋จ๋ฉด์ด์ง ์ํต ๊ณก๋ฉด ์ ๋ฐ์นจ์ ์ด ์๋๋ค. role/accepts๋ ์ฐธ์กฐ ๊ฒ์ฆ์ฉ ์์์ด๋ฉฐ ์ค์ ์ฐ์
ํ์ง ๋์์ ์ธ์ฆํ์ง ์๋๋ค.
|
|
20
|
+
|
|
21
|
+
## ๊ฐ์ ๋ณ๊ฒฝ์ ์๋ฏธ
|
|
22
|
+
|
|
23
|
+
identity๋ ํ์ฌ `[repeat node ID, index, member output ID]`๋ค. ๊ฐ์ด๋ฐ ์ ๋ ฌ์์ ๊ฐ์๊ฐ ๋ฐ๋๋ฉด ํญ๋ชฉ์ ์์น๋ ๋ฐ๋ ์ ์๋ค. ๊ฐ์ ID๋ **๊ฐ์ ์ ์ธ ์๋ฒ**์ด๋ผ๋ ๋ป์ด์ง, ์์น๊ฐ ๊ณ ์ ๋๊ฑฐ๋ ์ค์ ๋ฌผ๋ฆฌ ๋ถํ์ ์ ์กฐ๋ฒํธ๊ฐ ๊ฐ๋ค๋ ๋ป์ด ์๋๋ค.
|
|
24
|
+
|
|
25
|
+
- ์ ํ index๋ design ์
๋ ฅ ๋๋ ์์๋ก ์ ํ๋ค. state ์
๋ ฅ์ผ๋ก ํ๋ ์๋ง๋ค ๋์์ด ๋ฐ๋๋ ๊ฒ์ ๊ฑฐ๋ถํ๋ค.
|
|
26
|
+
- ๊ฐ์ ๊ฐ์๋ก ํด๋น index๊ฐ ์์ผ๋ฉด `TARGET_ABSENT`. ๊ฐ์ฅ ๊ฐ๊น์ด ํญ๋ชฉยท์ด์ ํ๋ ์ poseยท๋ง์ง๋ง ํญ๋ชฉ์ผ๋ก fallbackํ์ง ์๋๋ค.
|
|
27
|
+
- ์ฌํ์ฅํ๋ฉด ๋์ผ index/member์ ID๊ฐ ๋ณต๊ตฌ๋๋ค. ์ธ๋ถ ์ ์ ๋ ์์
๋ฌผ ํ ๋น๊น์ง ์๋ ๋ณต๊ตฌํ๋ค๋ ์๋ฏธ๋ ์๋๋ค.
|
|
28
|
+
- repeat/member ์ด๋ฆ ๋ณ๊ฒฝ์ identity ๋ณ๊ฒฝ์ด๋ค. ์์ IDยท๋ง์ด๊ทธ๋ ์ด์
์ ์ฑ
์ ์ ํ ํตํฉ ์ ์ ๋ณ๋ ํ์ ํด์ผ ํ๋ค.
|
|
29
|
+
|
|
30
|
+
## ๊ฒ์ฆ ๊ฒฐ๊ณผ
|
|
31
|
+
|
|
32
|
+
์ ์ฒด ์ปจ๋ฒ ์ด์ด๋ฅผ ์ฌ์ฉํด ๊ธธ์ด3 ร ํญ3 ร ํ์ 4 = **36๊ฐ ์ํ**์์ 14๋ฒ์งธ ๋กค๋ฌ ๋๋ฉด๊ณผ ๋ฒ์ ์ด ์ค์ occurrence๋ฅผ ๋ฐ๋ผ๊ฐ๋ ๊ฒ์ ํ์ธํ๋ค. geometry ๊ฐ์๋ binding ์ถ๊ฐ ์ ๊ณผ ๊ฐ๋ค.
|
|
33
|
+
|
|
34
|
+
14๋ฒ์งธ ํญ๋ชฉ ์กด์ฌ ๊ฒฝ๊ณ `length=2336mm`์์๋ ์ฑ๊ณตํ๊ณ `2335.999mm`์์๋ ์คํจํ๋ค. ์ ์ โ ์ถ์ ์คํจ โ ์ ์ ๋ณต๊ท ํ ๊ฒฐ๊ณผ๊ฐ ์ฒ์๊ณผ ๊ฐ๋ค. index๋ฅผ ์ฌ์ฉ์๊ฐ ๋ช
์์ ์ผ๋ก ๋ฐ๊พธ๋ฉด ๋์ ID๊ฐ ๋ฐ๋๋ค.
|
|
35
|
+
|
|
36
|
+
๋ค๋ฅธ shape์ feature, assembly์ ์๋ member, state ๊ธฐ๋ฐ index, ์๋ชป๋ binding frame์ ๊ฑฐ๋ถํ๋ค. JSON Schema ๊ฒ์ฆ๊ณผ ์ ์ฅ/์ฌ๋ก๋ยท๋
ธ๋ ์์ ๋ณ๊ฒฝ ์ดํ์๋ ๋์ ID์ ์คํจ ๋์์ ์ ์งํ๋ค.
|
|
37
|
+
|
|
38
|
+
์ด ๋จ๊ณ๋ ์์นยท์ฐธ์กฐ ๊ฒ์ฆ์ด๋ค. ์ UI๋ฅผ ๊ตฌํํ๊ฑฐ๋ ๋ธ๋ผ์ฐ์ ํธ์ง ํ๋ฆ์ ์ํํ ๊ฒ์ผ๋ก ๊ณ์ฐํ์ง ์๋๋ค.
|
|
39
|
+
|
|
40
|
+
## ๋จ์ ๋ฒ์
|
|
41
|
+
|
|
42
|
+
์ค์ฒฉ repeat, ์์ collection ์ฐ์ฐ, occurrence๋ณ persistent UUID, ์ญ์ /์ฌ์์ฑ ํ ์ธ๋ถ ์ ์ ์ฒ๋ฆฌ, UI์ ์ ํ ์ ์ง/์ค๋ฅ ๋ณต๊ตฌ ์๋ด๋ ์์ง ์๋ค. ์ง์งยทํ์ง ๊ธฐ๋ฅ์ ์ค์ ๋ฌผ๋ฆฌ ์กฐ๊ฑด์ ๋ณ๋ ๊ฒ์ฌ์ด๋ฉฐ ์ด๋ฒ ์ฐธ์กฐ ๊ฒ์ฆ๋ง์ผ๋ก ์ฑ๊ณต ์ฒ๋ฆฌํ์ง ์๋๋ค.
|