Three.js: InterleavedBuffer ํด๋ž˜์Šค์˜ stride ๊ธฐ๋ณธ๊ฐ’์ด ๋ˆ„๋ฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2017๋…„ 05์›” 28์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: mrdoob/three.js

๋ฌธ์ œ์— ๋Œ€ํ•œ ์„ค๋ช…

์—ฌ๊ธฐ InterleavedBuffer ํด๋ž˜์Šค์—์„œ๋Š” stride์˜ ๊ธฐ๋ณธ๊ฐ’์„ 0์œผ๋กœ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ stride๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์„ ์žŠ์œผ๋ฉด this.stride ๊ฐ’์ด undefined ๊ฐ€ ๋˜๊ณ  var stride = data.stride; _gl.vertexAttribPointer ๋กœ ์ด์–ด์ ธ ์ •์˜๋˜์ง€ ์•Š์€ webgl ๋™์ž‘์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

Three.js ๋ฒ„์ „
  • [X] ๊ฐœ๋ฐœ
  • [x] r85
  • [ ] ...
๋ธŒ๋ผ์šฐ์ €
  • [x] ๋ชจ๋‘
  • [ ] ํฌ๋กฌ
  • [ ] ํŒŒ์ด์–ดํญ์Šค
  • [ ] ์ธํ„ฐ๋„ท ์ต์Šคํ”Œ๋กœ๋Ÿฌ
OS
  • [x] ๋ชจ๋‘
  • [ ] ์œˆ๋„์šฐ
  • [ ] ๋งฅ OS
  • [ ] ๋ฆฌ๋ˆ…์Šค
  • [ ] ์•ˆ๋“œ๋กœ์ด๋“œ
  • [ ] iOS

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ธ์ˆ˜์˜ ๊ธฐ๋ณธ๊ฐ’์„ ์„ค์ •ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๊ฐ’์„ ์ „ํ˜€ ์ง€์ •ํ•˜์ง€ ์•Š์•„๋„ ๊ดœ์ฐฎ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. ๋‹จ, ์ด ๊ฒฝ์šฐ ๊ฐ’์„ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ 0์ด ๊ธฐ๋ณธ๊ฐ’์ธ ๊ฒฝ์šฐ ๋‹ค์Œ ์ค„์€ 0์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

three.js๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’์„ ํ™•์ธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ชจ๋“  3 ๋Œ“๊ธ€

์ธ์ˆ˜์˜ ๊ธฐ๋ณธ๊ฐ’์„ ์„ค์ •ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๊ฐ’์„ ์ „ํ˜€ ์ง€์ •ํ•˜์ง€ ์•Š์•„๋„ ๊ดœ์ฐฎ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. ๋‹จ, ์ด ๊ฒฝ์šฐ ๊ฐ’์„ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ 0์ด ๊ธฐ๋ณธ๊ฐ’์ธ ๊ฒฝ์šฐ ๋‹ค์Œ ์ค„์€ 0์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

three.js๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ฐ’์„ ํ™•์ธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  1. ๋ถˆํ–‰ํžˆ๋„ ์‚ฌ์šฉ์ž๊ฐ€ ํ•ด๋‹น ๊ฐ’์„ ์„ค์ •ํ•˜๋„๋ก ๊ฐ•์ œํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ์—†์Šต๋‹ˆ๋‹ค. C++์™€ ๋‹ฌ๋ฆฌ ์ปดํŒŒ์ผ ์‹œ๊ฐ„์— ๊ฐ์ง€๋ฉ๋‹ˆ๋‹ค. ์„ค์ •ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์ž๋™์œผ๋กœ ์ „๋‹ฌ๋˜์–ด ์ด์ƒํ•œ ๊ทธ๋ž˜ํ”ฝ ๋™์ž‘์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋Œ€์‹  ์„ค์ •๋˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? three.js์˜ ์ƒˆ๋กœ์šด ์‚ฌ์šฉ์ž๋กœ์„œ ๋‚˜๋Š” ๋ฌธ์ œ๋ฅผ ์ฐพ๋Š” ๋ฐ ๊ฝค ๋งŽ์€ ์‹œ๊ฐ„์„ ํ—ˆ๋น„ํ–ˆ๊ณ , ์ด ํ•จ์ •์— ๋น ์ง€๊ฒŒ ๋  ์‚ฌ๋žŒ์€ ๋‚˜ ํ˜ผ์ž๊ฐ€ ์•„๋‹ ๊ฒƒ์ด๋ผ๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค.

  2. ์‚ฌ์šฉ์ž๊ฐ€ stride ์— 0์„ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์„ ๋ง‰์„ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ์—†์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด @WestLangley ๊ฐ€ ๋ฐฉ๊ธˆ ์–ธ๊ธ‰ํ•œ 0์œผ๋กœ ๋‚˜๋ˆ„๊ธฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

  3. ์—ฌ๊ธฐ API ๋ฌธ์„œ๋Š” stride ๊ฐ€ ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ๋ช…ํ™•ํ•œ ์„ค๋ช…์„ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. OpenGL/WebGL API์— ๋Œ€ํ•œ ๋‚ด ๊ฒฝํ—˜์— ๋”ฐ๋ฅด๋ฉด stride ๋Š” ์ •์  ์†์„ฑ์— ๋Œ€ํ•œ float ๋˜๋Š” int์˜ ๊ธฐ๋ณธ ์š”์†Œ ์ˆ˜์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ count ๋Š” ์†์„ฑ์ด ์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜ array ์— ์ •์˜๋œ ๊ผญ์ง“์ ์˜ ์ˆ˜์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  4. ๊ทธ๋ฆฌ๊ณ  ๋‚ด๊ฐ€ ํ‹€๋ ธ๋‹ค๋ฉด ์ •์ •ํ•ด ์ฃผ์‹ญ์‹œ์˜ค. this.count ๋Š” ์ „์ฒด WebGLRender ๋ฅผ ํ†ตํ•ด ์–ด๋–ค ์‚ฌ์šฉ๋ฒ•๋„ ์ฐพ์ง€ ๋ชปํ•œ ๋ฐ˜๋ฉด stride ๋Š” ์ค‘์š”ํ•œ GL ํ˜ธ์ถœ _gl.vertexAttribPointer ์—์„œ ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. stride 0์„ ํ• ๋‹นํ•œ ํ›„ ์ •ํ™•ํžˆ ์ •ํ™•ํ•˜์ง€ ์•Š๊ณ  this.count ๊ฐ€ ์ด์ œ Infinity ์ธ ์ด์œ ๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์–ด๋””์—.

๋”ฐ๋ผ์„œ stride ๊ฐ’์„ ํ™•์ธํ•˜๊ณ  undefined ๋˜๋Š” 0 ์˜ ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž์—๊ฒŒ ํ”„๋กฌํ”„ํŠธ๋ฅผ ํ‘œ์‹œํ•˜๋„๋ก ์•ˆ์ „ ์žฅ์น˜๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์˜ˆ, ์ด๊ฒƒ์€ JavaScript์ด๋ฉฐ ์ด์ „ ์— ์ด๋Ÿฌํ•œ ๋…ผ์˜๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๋ฐ˜๋ฉด์— ๋ฌธ์„œ๊ฐ€ ๋ถ€์ ์ ˆํ•˜๊ฑฐ๋‚˜ ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐ๋˜๋ฉด ์ด๋ฅผ ๊ฐœ์„ ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ์ข‹์€ ์‹œ๊ฐ„์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. :)

์ฐธ์กฐํ•œ ์ฝ”๋“œ์—์„œ count ๋Š” ์ •์ ์˜ ์ˆ˜์ž…๋‹ˆ๋‹ค. ์†์„ฑ์€ ๋ Œ๋”๋Ÿฌ์—์„œ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์ง€๋งŒ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ๊ณ„์ธต์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์†์„ฑ์ž…๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰