ãã®åé¡ã䜿çšããŠãGLTF2ãšã¯ã¹ããŒã¿ãŒã®æ©èœã远跡ããããšæããŸãã PR https://github.com/mrdoob/three.js/pull/11917ã§èª¬æãããŠããæ©èœã®æåã®ãªã¹ããã³ããŒããŸãããå®è£ ãé²ãã«ã€ããŠããªã¹ããæŽæ°ãç¶ããŸãã
trs
ã¯ããããªãã¯ã¹ã®ä»£ããã«TRSããšã¯ã¹ããŒãããŸãinput
ïŒtruncateDrawRange
ïŒ drawRange
å®çŸ©ãããå±æ§å€ã®ã¿ã匷å¶çã«ãšã¯ã¹ããŒãããŸãïŒextras
userData
ãå«ããŸããïŒmaterial.wireframe === true
å Žåãè¡ãšããŠãšã¯ã¹ããŒãããŸãpbrMetallicRoughness
for MeshStandardMaterial
baseColorFactor
metallicFactor
roughnessFactor
baseColorTexture
ïŒãµããŒããããŠããŸãïŒ material.map
ïŒãã texCoord
ã¯åžžã«0ã«èšå®ãããŠããŸããdoubleSided
uri
ã䜿çšããŠmap.image.src
uri
base64bufferView
flipY
ç»åãåŠçãã[]ã¢ã¯ã»ãµãŒ
bufferView
ã䜿çšããŸãïŒWIP @takahiroxïŒsparse
ãµããŒãããŸããïŒbufferView
byteOffset
ïŒçŸåšãã¢ã¯ã»ãµãŒããšã«æ°ããbufferViewãäœæããŠãããããåžžã«0ã䜿çšããŠããŸããcomponentType
count
max
min
type
ïŒSCALAR
VEC2
VEC3
VEC4
[] BufferViews ïŒçŸåšã Accessor
ããšã«æ°ããbufferView
ãäœæããŠããŸããããã¯ãåãcomponentType
ãå
±æãããããã®å±æ§ã«1ã€ã ãã䜿çšããããã«ä¿®æ£ããå¿
èŠããããŸãã
buffer
byteOffset
byteLength
byteStride
target
stats
ãªãã·ã§ã³ãå«ããŸããïŒçŸåšã®ãã¢ïŒ
@donmccurdyã®gltfãã¥ãŒã¢ã«ããŒãããããšã¯ã¹ããŒããããgltf
GLTFïŒ https ïŒ//gist.github.com/fernandojsg/0e86638d81839708bcbb78ab67142640
ããã¯æ¬åœã«æ Œå¥œè¯ãã§ãïŒ
ã¡ãªã¿ã«ã THREE.GLTFLoader
ãåé€ãã GLTF2Loader
â GLTFLoader
ååãè¿ããã¡ã«å€æŽããäºå®ã§ã*ã æ··ä¹±ãé¿ããããã«ãr87ããªãªãŒã¹ãããåã«ãšã¯ã¹ããŒã¿ãŒã®ååãGLTFExporterã«å€æŽããããšããå§ãããŸããããã«ããããªãªãŒã¹éã§ååãå€æŽããå¿
èŠããªããªããŸãã ãã£ãšãããªãããã§ã«ãã®ããã«ååãä»ããŠããã®ãèŠéããŸãã..ç¶ããŠãã ããïŒ ð
* @mrdoob ãããããã€èµ·ããã¹ããã«ã€ããŠã®å¥œã¿ã¯ãããŸããïŒ éæšå¥šã®èŠåã ãã§r87ã«GLTFLoader
ãä¿æããr88ã§åé€ãããå Žåãé€ããŠãIMOã§ãããå®è¡ã§ããŸããïŒ
æ©ãã»ã©è¯ããšæããŸãã æ°ããGLTFLoader
ã1.0ãæ€åºãã2.0以éã®ã¿ããµããŒãããŠããããšããŠãŒã¶ãŒã«èŠåã§ããéãã
IIRCã¯ãåã«è¿°ã¹ãããã«asset
ãèŠãããšã§æ€åºã§ããŸãã
IIRCã¯ãåè¿°ã®ããã«ã¢ã»ããã確èªããããšã§æ€åºã§ããŸãã
â ããïŒ https://github.com/mrdoob/three.js/pull/11864
ãããïŒ ããããç§ã¯ãã€ããŒãªãã°ãèŠã€ããŸããã ä»PRãããŠããŸãã ååãå€æŽããåã«ããŒãžããŸãããã
ãã§ãã¯ãªã¹ãã§èª°ããåãçµãã§ããé ç®ãæå®ã§ããŸããïŒ
@takahirox確ãã«ïŒ 人ã ã¯ããã«ã³ã¡ã³ããæžãããšãã§ãããªã¹ããæŽæ°ããŠããã§ã«äœããèµ·ãã£ãŠããå Žåã¯PRãæãããšãã§ããŸã
次ã«äœæ¥ããã®ã¯ããã¯ã¹ãã£ã䜿çšããŠãURLã ãã䜿çšããã®ã§ã¯ãªãbase64ã«å€æããããšã§ãã
ããããšãïŒ glTFãšã¯ã¹ããŒã¿ãŒã®äœæãæäŒãããã§ãã ãã§ãã¯ãªã¹ãã§äœãã§ããã調ã¹ãŠããŸã...
ãšããã§ãæå³çã«2ã€ã®å€æ°WEBGL_CONSTANTS
ãšTHREE_TO_WEBGL
ã°ããŒãã«ã«ããããšããããŸããïŒ
@takahiroxãã£ãããïŒ
2ã€ã®å€æ°ã«é¢ããŠã¯ãããã次ã®PRã§åãäžããŠã WebGLUtils
äžéšã«ããŠãã€ã³ããŒãããã ãã§ãã ãããã®å®æ°ãå¿
èŠãšãããããããæ¯åããããåå®çŸ©ããå¿
èŠãããããšã¯æå³ããããŸããã
@takahiroxãšããã§ããã¡ãããªã¹ãã«æ°ããã¢ã€ãã ãææ¡ããŠãã ããïŒ ;ïŒ
@fernandojsgãã¡ããã§ãïŒ å€æ°ã«ã€ããŠã¯ãæå³çã«ã°ããŒãã«ãšããŠå®£èšãããŠããå Žåã¯ãã©ããã«ç§»åããããšãææ¡ãããã£ãã®ã§ãããããŠããããšãç¥ã£ãŠãããšäŸ¿å©ã§ãã
å ±æãããã¡ãã¥ãŒã§äœæ¥ãããã
BufferViewsïŒçŸåšãã¢ã¯ã»ãµãŒããšã«æ°ããbufferViewãäœæããŠããŸããããã¯ãåãcomponentTypeãå ±æãããããã®å±æ§ã«1ã€ã ãã䜿çšããããã«ä¿®æ£ããå¿ èŠããããŸãã
ãã¹ãŠã®å±æ§ã«1ã€ã§ã¯ãªããåãcomponentTypeãå ±æããå±æ§ã«1ã€ããã®ã¯ãããŒã¿ã®é 眮ã®ããã§ãããïŒ
https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#data -alignment
ãã£ããããç§ã¯ããªãããªã¹ãã«è¿œå ããŸããðã¯ããåºæ¬çã«åãã¿ã€ãã®ã³ã³ããŒãã³ãã®åããããã¡ãã¥ãŒãå ±æããããšæããŸããããšãã°ãäœçœ®ããããéåžžã®å Žåã2ã€ã®VEC3ã¢ã¯ã»ãµããããŸããããããã¯ãã€ã³ãããŸãåãbufferviewã«ã ããã¯çŽ æŽãããåºçºç¹ã«ãªããããããŸãã;ïŒ
ã€ãŸããç°ãªãcomponentTypeïŒäŸïŒfloatãšshortïŒéã§ãããã¡ãŒãã¥ãŒãå ±æãããªãçç±ã¯ãé©åãªããŒã¿ã¢ã©ã€ã¡ã³ããç¶æããããã§ãã
normal (Vec3)
ã position (Vec3)
ã uv (Vec2)
ãåãtarget
ã§ããéããåããããã¡ãã¥ãŒã«ç°ãªãã³ã³ããŒãã³ãã¿ã€ããæ ŒçŽã§ãããšæããŸããåããããã¡ãã¥ãŒã«ããå¯èœæ§ããããŸããã indices
ã¯ãããŸããã @donmccurdy確èªã§ããŸããïŒ
ãããåæããã ãããŠããã®glTFä»æ§ãèšåããŠããããã«
https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#data -alignment
ã¢ã¯ã»ãµãŒã®bufferViewãžã®ãªãã»ããïŒã€ãŸããaccessor.byteOffsetïŒããã³ã¢ã¯ã»ãµãŒã®ãããã¡ãŒãžã®ãªãã»ããïŒã€ãŸããaccessor.byteOffset + bufferView.byteOffsetïŒã¯ãã¢ã¯ã»ãµãŒã®ã³ã³ããŒãã³ãã¿ã€ãã®ãµã€ãºã®åæ°ã§ããå¿ èŠããããŸãã
ç°¡åã«ããããã«ãç°ãªãcomponentTypeïŒ= floatãšshortã®ãããªããŒã¿åãvec2ãvec3ã§ã¯ãªãïŒã®éã§ãããã¡ãŒãã¥ãŒãåé¢ããããšããå§ãããŸãã ç°ãªãããŒã¿é·ã®componentTypeéã§ããããåé¢ãããšãããæé©åãããŸãã
ãšããã§ãçŸåšã®ãšã¯ã¹ããŒã¿ãŒãaccessor.componentType
floatãuintãushortã®ã¿ããµããŒãããŠããç¹å¥ãªçç±ã¯ãããŸããïŒ glTF 2.0ã¯ãcharãucharãããã³shortã«å ããŠãããããåŠçã§ããŸãã
https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#accessorcomponenttype -white_check_mark
@takahiroxã¯å®éã«ã¯ããã§ã¯ãããŸãããçŸåšãµããŒãããŠããå±æ§ã®ã¿ã€ãïŒäœçœ®ãæ³ç·ãè²ãUVãã€ã³ããã¯ã¹ãªã©ïŒã«äœ¿çšãããŠãããããããããå®çŸ©ããŸããã
ç§ãåãçµãã§ãã次ã®ã¹ãããã¯ãã¯ã¹ãã£ãªã®ã§ãããšãã°uchar
ãããªä»ã®ãã®ãå¿
èŠã«ãªããŸã
OKãããã§ãããªãããã§ã«å®è£
ãå§ããŠããªãéããç§ã¯æåã«accessor.componentType
åãçµã¿ãŸãã
ã»ãŒæºåãã§ããŠããŸãããç§ã®PRã¯ïŒ11978ãšç«¶åããã¯ãã§ãã
ã ããç§ã¯ïŒ11978ãããŒãžããããç§ã®ãã®ãéãã競åãä¿®æ£ããŸãã
ãªã¹ãã«ã¢ãã¡ãŒã·ã§ã³ãè¿œå ããŸããïŒ
@takahirox確ãã«ãã¢ãã¡ãŒã·ã§ã³ãè¿œå ããã®ã¯çŽ æŽãããããšãããããŸããã three.jsã®ã¢ãã¡ãŒã·ã§ã³æ©èœã®çŸåšã®ç¶æ ã«ç²ŸéããŠããªãã£ããããè¿œå ããŸããã§ããããåŒãç¶ãããšã«ããå Žåã¯çŽ æŽãããã§ããã;ïŒ
BufferGeometryã°ã«ãŒãããµããŒãããäºå®ã¯ãããŸããïŒ
GLTFä»æ§ã¯ãããã«ããŒããŠããŸããããããšããã¹ãŠã®ã°ã«ãŒãã«æ°ããã¡ãã·ã¥ãäœæããããšã«ãªããŸããïŒ
ããã泚æãæãå¿
èŠããããŸããã¡ãã·ã¥ã®ææç¹æ§ã¯ææã®é
åã§ãã
@marcatec glTFä»æ§ã«ã¯ããã¡ãã·ã¥ããšãããªããã£ããã®åºå¥ãããããããããç°ãªããããªã¢ã«ãåç §ã§ããBufferGeometryã°ã«ãŒããäœæã§ããŸãã çŸåšãTHREE.GLTFLoaderã¯ããŒãããªããã£ããæé©åãããåå¥ã®ã¡ãã·ã¥ãäœæããŸãããå®è£ ããããšã¯ã§ããŸãã
çŽ æŽãããä»äºãçŽ æŽããããªã¹ãããããŠãã®ãã©ãŒãããã«ã¯ãã§ã«ããããã®ãµããŒããããããšãç¥ã£ãŠãããšè¯ãã§ãããïŒ ãŸããgltfãã¬ã³ããŒãšã¯ã¹ããŒã¿ãŒãšäžç·ã«éåžžã«ããŸãæ©èœããŸãã ã©ã€ãã®ãµããŒããåŸ ã¡ãããŸããïŒ ãããããããçµæãåºãç¶ããŠãã ããã
ç§ã¯åæããŸããçŽ æŽãããä»äºã§ãïŒ
StandardMaterial以å€ã®ãããªã¢ã«ã®ãµããŒããè¿œå ããäºå®ã¯ãããŸããïŒ
ããããšãïŒ
@homerjam MeshStandardMaterialãšå
±æãããŠãããããªã¢ã«ããããã£ã¯ãã¹ãŠä¿æãããŸããããšãã°ã map
ãšnormalMap
ã䜿çšããMeshPhongMaterialã¯ããããã®ãã¯ã¹ãã£ããã®ãŸãŸã«ããŠãšã¯ã¹ããŒãããŸãããthree.jsã«ã€ã³ããŒãããŠæ»ããšMeshStandardMaterialã«ãªããŸãã ãšã¯ã¹ããŒã¿ãŒã¯çŸåšããã®ããã«PBRãžã®ãã€ãŒããªå€æãè¡ã£ãŠããŸãã
ã©ãŠã³ãããªãããµããŒãïŒGLTFExporterããPhongããšã¯ã¹ããŒãããGLTFLoaderããPhongãããŒãããïŒã§ã¯ãglTF圢åŒã§é²è¡äžã®äœæ¥ãå¿ èŠã«ãªããŸãïŒ https ïŒ
baseColorTexture
ïŒãµããŒããããŠããŸãïŒmaterial.mapïŒããtexCoordã¯åžžã«0ã«èšå®ãããŠããŸã
@fernandojsgããã§äœãæ¬ ããŠããã®ãæ確ã«ã§ããŸããïŒ .map
ã¯åžžã«three.jsã®æåã®UVã»ããã§ãããããããã¯glTFã§ãããè¡šãæ£ããæ¹æ³ã®ããã«èãããŸããïŒ
ãŸãã泚æç¹ãšããŠããªã¹ãã®3ã€ã®é ç®ã«åãæ¶ãç·ãä»ããŸããã 以äžã®çç±ïŒ
ãšãã£ã¿ãŒããGLBã«ãšã¯ã¹ããŒããããšã alphaMap
ã roughnessMap
ãããã³metalnessMap
ããšã¯ã¹ããŒããããªãããšã«æ°ä»ããŸããã
ïŒ13397ã§ã normalMap
ã©ã¡ãããšã¯ã¹ããŒããããªããšèšããŸããããééã£ãŠããããã§ãã
ãšãã£ã¿ãŒããGLBã«ãšã¯ã¹ããŒããããšãalphaMapãroughnessMapãmetalnessMapããšã¯ã¹ããŒããããªãããšã«æ°ä»ããŸããã
誰ãããã§ã«å§ããŠããªãéããç§ã¯ä»æ¥ããã«åãçµã¿ãŸãã
@donmccurdy
ã¹ããŒã¹ã¢ã¯ã»ãµ
ããã¯ãmattdeslã®ã¹ã¯ãªããã®ããã«ããšã¯ã¹ããŒãåŸã®æé©åã«ä»»ããã®ãæåã ãšæããŸãã
ãšã¯ã¹ããŒã¿ã«ã¢ãŒãã®ã¹ããŒã¹ã¢ã¯ã»ãµããµããŒããããããšæããŠããŸãã åŸã§è©ŠããŠã¿ãŸãã
@takahiroxãã£ãããïŒ ã©ããïŒ
alphaMap
ãglTF2.0ã§ãµããŒããããŠãããšã¯æããŸããã
https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#material
ãããç§ã¯ãããæããŸãã.... metalnessMap
ãšroughnessMap
ã©ãã§ããïŒ
ç§ã¯ä»ãããã«åãçµãã§ããŸãïŒ
ç»åãã©ãŒãããã«ã€ããŠã glTF 2.0ã¯ãå€éšç»åãã¡ã€ã«ãšããŠ.pngãš.jpgã®ã¿ããµããŒãããŸãã ãµããŒããããŠããªãç»å圢åŒã®ãã¡ã€ã«ïŒäŸïŒ.bmpïŒãembedImages
ã¢ãŒãã§åŠçããæ¹æ³ãæ€èšããŠããŸãã
ç§ã¯1ã奜ãã§ããäœãèãã¯ãããŸããïŒ
ãããŒãæ¬åœã«ããªããã¡ã®äœåã«æè¬ããŸãã
ã»ãšãã©ã®3Dã¢ãã«ã¯ãã«ããããªã¢ã«ã䜿çšããŠããããã Multi-material meshes
ãã§ããã ãæ©ãå®è£
ãããããšãæåŸ
ããŠããŸãã
- .pngãŸãã¯.jpgã«å€æããŠåã蟌ã¿ãŸã
- æ°ã«ããªãã§ãã ããã å ã®ç»åãã¡ã€ã«ãšããŠãšã¯ã¹ããŒã
- ãšã¯ã¹ããŒãããªãã§ãã ãã
ç§ã¯3ã«æ祚ããã³ã³ãœãŒã«ã«èŠåãèšé²ããŸãã
ã»ãšãã©ã®3Dã¢ãã«ã¯ãã«ããããªã¢ã«ã䜿çšããŠããããããã«ããããªã¢ã«ã¡ãã·ã¥ãã§ããã ãæ©ãå®è£ ãããããšãæåŸ ããŠããŸãã
åæããŸãããç§ã«ãšã£ãŠããã¯èŒžåºæ¥è ã®äœ¿çšã劚ããäžçªã®åé¡ã§ãã
ã»ãšãã©ã®3Dã¢ãã«ã¯ãã«ããããªã¢ã«ã䜿çšããŠããããããã«ããããªã¢ã«ã¡ãã·ã¥ãã§ããã ãæ©ãå®è£ ãããããšãæåŸ ããŠããŸãã
ä»ã®ã¹ã¬ããã§èšã£ãããã«ãç§ã¯ããã«åãçµãã§ããŸãã
- .pngãŸãã¯.jpgã«å€æããŠåã蟌ã¿ãŸã
- æ°ã«ããªãã§ãã ããã å ã®ç»åãã¡ã€ã«ãšããŠãšã¯ã¹ããŒã
- ãšã¯ã¹ããŒãããªãã§ãã ãã
ç§ã¯3ã«æ祚ããã³ã³ãœãŒã«ã«èŠåãèšé²ããŸã
ãããç§ã¯3.ãããåçŽã§ããŠãŒã¶ãŒãæ··ä¹±ãããªãã ãããšæãããã«ãªããŸããã emedImages
ã¢ãŒãã§åã蟌ã¿ç»åãååŸãããšãå°ãæ··ä¹±ããŸãã
ç§ã1.ã奜ãçç±ã¯ãä»ã®åœ¢åŒããglTFã«å€æããããã§ããã ä»ã®åœ¢åŒã®äžéšïŒãŸãã¯å€ãïŒã«ã¯ãç»å圢åŒã®å¶éããããŸããã
ãšã¯ã¹ããŒã¿ã¯embedImages
ã¢ãŒãã§å€æããŸãã ãããã£ãŠãã³ã³ãœãŒã«ã®èŠåã«ãå€æããå Žåã¯embedImagesãªãã·ã§ã³ã䜿çšããããè¿œå ãããšãããšæããŸãã
ç§ã3人ã§è¡ããŸãã ä»ã®åœ¢åŒããã®å€æã¯é¢åãªå Žåãããããšã«ããããã€ãã®åœ¢åŒãä»ã®åœ¢åŒãããåªå ããå¿ èŠããããŸãã ããããä»ãã3ãå®è¡ããŠãgltfãktxãªã©ã®æ°ãããã¯ã¹ãã£ãã©ãŒãããã«ãµããŒããè¿œå ãããã©ããã確èªããã®ãåŸ ã€äŸ¡å€ããããŸããå®è£ ãåæ€èšã§ããŸãã
https://github.com/mrdoob/three.js/pull/13415#issuecomment -369022383ã§èª¬æãããŠããããã«ããšã¯ã¹ããŒã¿ãŒããŠãŒã¶ãŒçšã«ambientRoughnessMetalness
ãã¯ã¹ãã£ãäœæã§ããã°äŸ¿å©ã§ãã ããããããã®ã³ãŒããImageUtils
ã«é
眮ããæ¹ãè¯ãã§ãããã
ãã§ãã¯ãªã¹ããææ°ã®å€æŽã§æŽæ°ããŸããã multimaterial
ã¢ã€ãã ã«@takahiroxãè¿œå ããŸãããããã§ãç»åã®äœæã¿ã¹ã¯ãå®è¡ããŸãã
material_unlitæ¡åŒµæ©èœãè¿œå ããŸãããããŸã ãã©ããäžã§ããããªãªãŒã¹ã«éåžžã«è¿ããããã»ã©å€æŽãããªããšæããŸãïŒ/ cc @donmccurdyïŒ
ã»ãšãã©ã®3Dã¢ãã«ã¯ãã«ããããªã¢ã«ã䜿çšããŠããããããã«ããããªã¢ã«ã¡ãã·ã¥ãã§ããã ãæ©ãå®è£ ãããããšãæåŸ ããŠããŸãã
ä»ã®ã¹ã¬ããã§èšã£ãããã«ãç§ã¯ããã«åãçµãã§ããŸãã
WIP ...ïŒãã¯ã«ã¯ãã«ããããªã¢ã«ããããŸãïŒ
ãµããŒããããŠããªãç»å圢åŒã«ã€ããŠã¯ã3ã€ã«ããŸãããã
@takahiroxæ Œå¥œè¯ãïŒ ð
ãšããã§ãããªãã¯zipã¢ãŒã«ã€ãã®ãµããŒãã«èå³ããããŸããïŒ .glTF +å€éšã®.binãšãã¯ã¹ãã£ã¯ä»ã®ãªãŒãµãªã³ã°ããŒã«ïŒå€åïŒã«é©åããŸãããã¢ãŒã«ã€ã以å€ã§ã¯è¡ãã®ã¯å°é£ã§ãã ãããã£ãŠãzipã¢ãŒã«ã€ããå¿ èŠã«ãªããŸãã ãããŠããšã¯ã¹ããŒãããããã¡ã€ã«ãµã€ãºãæžããããšãã§ããŸãã
以åã«å°å ã®æ¯åºã§è©ŠããŠã¿ãŸããããèå³ãããã°åŸã§å ±æã§ããŸãã
ããã¯glbãgzipããããšãšã»ãšãã©åãã§ã¯ãããŸãããïŒ
.glTF +å€éšã®.binãšãã¯ã¹ãã£ã¯ä»ã®ãªãŒãµãªã³ã°ããŒã«ã«é©åããŸãïŒå€åïŒ
ãªãŒãµãªã³ã°ããŒã«ãåå¥ã®ãã¡ã€ã«ãå¿ èŠãšããªãããšãé¡ã£ãŠããŸãã ããã©ã«ãã§GLBã䜿çšããããšããã¹ãŠã®äººã«å¥šå±ããŠããŸãã ãã ããç»åãåã蟌ãŸããŠããªãå Žåã¯ãç»åãæåã§ç·šéããæ¹ãç°¡åã§ãã
ãã®æ©èœãTHREE.GLTFExporter
çŽæ¥å
¥ããããã©ããã«ã€ããŠã¯åŒ·ãæèŠã¯ãããŸãã...ãããã代ããã«glTFã®æé©ååŸã®ãªãã·ã§ã³ãå€ãããªãããã«ããå¿
èŠããããšæããŸãã å¥ã®äŸãšããŠãDracoã¯äžçš®ã®è€éã§ãããã€ãã®å€éšãã¡ã€ã«ãå¿
èŠãšãããããç¹æ®ãªglTFããglTFãžã®ããŒã«ã«ãã®æé©åãè¡ãããæ¹ãããã®ã§ã¯ãªãã§ããããã åæ§ã«ãglb-unpackerïŒhttp://glb-packer.glitch.me/ã®å察åŽïŒãäœæããŠã人ã
ãå¿
èŠãšããŠããããšãããã£ãå Žåã«ãGLBããZIPã«ãã¡ã€ã«ã解åã§ããããã«ããããšãã§ããŸãã
https://github.com/KhronosGroup/glTF/issues/1256ããâ
... gltf-pipelineã®æ¬æ¥ã®ç®çïŒãããŠå®éã«ã¯äžè¬çã«glTFïŒã¯ããšã¯ã¹ããŒã¿ãŒãå¯èœãªéãåçŽã«ããæé©åãå ±éã®ããŒã«ã«ããã·ã¥ããŸãã ãã¡ãããæçåã«ã圹ç«ã¡ãŸãã
ããã¯èšã£ãŠããç§ãç¥ã£ãŠããglb-unpackerã¯ãŸã ååšããŸãã...
@mrdoob
ãã¯ã¹ãã£ç»åã¯ã.glTFãš.glbã§ã¯ãªããå€éšã®ãã®ã«ãããã£ãã®ã§ãã
@donmccurdy
https://github.com/KhronosGroup/glTF/issues/1117ã®ãã£ã¹ã«ãã·ã§ã³ããã©ããŒã¢ãããã.glb +åã蟌ã¿ãã¡ã€ã«ãšãã€ãã©ã€ã³ã¢ãããŒããä»ãã奚å±ããããšã«åæããŸãã 1ã€ã®.glbã¯ãç¹ã«Webããã³ãã€ãã©ã€ã³ã¢ãããŒãã®ããŒã¿éä¿¡ã«é©ããŠããŸããããã«ããããšã¯ã¹ããŒã¿ãŒãšããŒã«ãã·ã³ãã«ã§åå©çšå¯èœã«ä¿ã€ããšãã§ããŸãã ïŒç§ã¯UNIX / Linuxã³ãã³ããã€ãã©ã€ã³ã¢ãããŒãã奜ãã§ãïŒïŒ
ãããã£ãŠããšã¯ã¹ããŒã¿ãŒã¯çŸåšzipã¢ãŒã«ã€ãã®ãµããŒããå¿ èŠãšããªããšæããŸãã ãŸããåãçç±ã§ãã¹ããŒã¹ã¢ã¯ã»ãµãŒãšdracoã®ãµããŒããå¿ èŠãªããããããŸããã
glb-unpackerã«é¢ããŠã¯ãæãªãšãã«äœããããããŸããã glTFåºæã®ããŒã«ããªããŠãèªã¿åãå¯èœãªããã.glTF +å€éšãã¡ã€ã«ã奜ããªã¢ãŒãã£ã¹ãããããšæããŸãã ãŸããå€éšãã¡ã€ã«ã¯ãã¡ã€ã«ã®äžŠåããŒãã«ããããŒãæéãççž®ã§ããå Žåããããæé©åã®ç®çã§äœ¿çšã§ããŸãã
ãã€ãã©ã€ã³/æé©åããŒã«ã«é¢ããŠã¯ããããã¯ãŒã¯ãä»ããŠå·šå€§ãªããŒã¿ã転éããããªãããšã«æ³šæããããšæããŸãã ãŠãŒã¶ãŒã¯ãããŒã¿ã転éããåã«æé©å/å§çž®ããããšèããŠããŸãã ãã®ããããŠãŒã¶ãŒããµãŒããŒã«å·šå€§ãªãã¡ã€ã«ãéä¿¡ããå¿ èŠããããããglTFæé©åWebãµãŒãã¹ã巚倧ãªããŒã¿ã«å¯ŸããŠããŸãæ©èœããªãå ŽåããããŸãã
ããã«ãThree.jsããã®ä»ã®JavaScriptãã©ãŠã¶ãŒããŒã¹ã®ãšã³ãžã³ã®å Žåããã©ãŠã¶ãŒã§å®è¡ãããglTFæé©åããŒã«ãããã°å¹žãã§ãã ããŒã¿ããŠãŒã¶ãŒã«æž¡ãããåã«æé©å/å§çž®ã§ããŸãã ãããããªããšããã©ãŠã¶ã®å¶éã«ããããŠãŒã¶ãŒã¯ãšã¯ã¹ããŒããããããŒã¿ãæåã§ããŠã³ããŒãããŠãããã€ãã©ã€ã³ããŒã«ã«æž¡ãå¿ èŠããããŸãã
ãã®èŠ³ç¹ãããããŒã«ãã©ãã§ãããã©ãŠã¶ãŒããµãŒããŒãCUIãªã©ã§å®è¡ããŠãããäžè¬çã§åå©çšã§ããããã«ããããšèããŠããŸãã ç°ãªããã©ãããã©ãŒã çšã«åãç®çã®ããŒã«ã2å以äžäœæããããããŸããã ã§ã¯ãnode.jsããŒã¹ã®ããŒã«ãè¯ãã§ããããïŒ glTFïŒãã€ãã©ã€ã³ïŒããŒã ã«äœãææ¡ã¯ãããŸããïŒ ïŒãã¶ãããã®è°è«ã¯ããã§ã¯ãªããglTFã§è¡ãããã¹ãã§ããïŒ
念ã®ããã GLTFLoader
ãã€ããªãµããŒããæ¡åŒµæ©èœãšããŠå®è£
ãããŠããŸããã.glbã¯glTF 2.0ã®ã³ã¢ä»æ§ã«å«ãŸããŠããŸãããïŒ
念ã®ãããGLTFLoaderã§ã¯ãã€ããªãµããŒããæ¡åŒµæ©èœãšããŠå®è£ ãããŠããŸããã.glbã¯glTF 2.0ã®ã³ã¢ä»æ§ã«å«ãŸããŠããŸãããïŒ
ãããããã¯glTF 1.0ã®æ¡åŒµã§ãããã³ã¢glTF 2.0ä»æ§ã®äžéšã«ãªã£ãåŸããã®ã³ãŒããåé 眮ãããååãå€æŽãããããããšã¯ãããŸããã§ããã
ãã®èŠ³ç¹ããã[æé©åããŒã«]ãã©ãã§ãããã©ãŠã¶ãŒããµãŒããŒãCUIãªã©ã§å®è¡ã§ããããã«ããŠãããäžè¬çã§åå©çšã§ããããã«ããããšèããŠããŸãã ã§ã¯ãnode.jsããŒã¹ã®ããŒã«ãè¯ãã§ããããïŒ glTFïŒãã€ãã©ã€ã³ïŒããŒã ã«äœãææ¡ã¯ãããŸããïŒ ïŒãã¶ãããã®è°è«ã¯ããã§ã¯ãªããglTFã§è¡ãããã¹ãã§ããïŒ
glTF-Pipelineã®ããŒããããã«ã€ããŠè³ªåãã䟡å€ããããŸã... glTF-Toolkitã¯é¢é£æ§ãããããã«èŠããŸãããïŒçŸåšïŒWindowsã§ã®ã¿å®è¡ãããŸãã ç§ã¯å人çã«Node.jsã奜ãã§ãããWASMãžã®ã³ã³ãã€ã«ã§ã¯C ++ãŸãã¯Rustã劥åœãªéžæã§ããå¯èœæ§ããããŸãã
ãããWASMãžã®ã³ã³ãã€ã«ããããŸããã§ããã ããã€ãã®æšå¥šãããéçºãã©ãããã©ãŒã ãæå®ããããšã¯ãæé©åéçºã«åœ¹ç«ã¡ãŸãã ã ããç§ã¯é©åãªã¹ã¬ããã«ææ¡ããããšæããŸãã
ç§ã¯three.jsãšã¯ç°ãªãã¬ãã«äœãããšãã§ãããã€ãã©ã€ã³äžã®ãããã®æé©åãæããããã«ç§ã¯@donmccurdyã«åæãã誰ãã圌ãããå©çãåŸãããšãã§ããŸãã gltfãã€ãã©ã€ã³ãšããŒã«ãããããŒã«ã®éãã確èªããå¿
èŠããããŸããããã®çš®ã®æ©èœãå«ãŸããŠãããšæããŸãã
ãŸããWASMãããã°ããœãŒã¹èšèªã¯ããã»ã©éèŠã§ã¯ãªãããšã«ãåæããŸãããnode.jsã§èšè¿°ãããŠããå Žåã3DWebãšã³ãžã³åšèŸºã®ã³ãã¥ããã£ã®å€ãããããã®æ¹åã«åœ¹ç«ã€å¯èœæ§ãããããšãäºå®ã§ãããšã«ãããä»ã¯ãã®ãã¡ã€ã«åœ¢åŒã®äž»ãªã¿ãŒã²ããã§ãã
ãå€æåã®æé©åãã«ã€ããŠç解ã§ããŸãã...ãã€ãã©ã€ã³ãã¢ãã«ã«å¯ŸããŠå®è¡ããå¯èœæ§ã®ããå€æã«ã¯ããã€ãã®ã¿ã€ãããããæé©åã¯ããããæãäžè¬çãªã¿ã€ãã®å€æã§ããïŒ
ãããè¶ ããŠåæããã ä»ã®ããŒã«ãæ§ç¯ãããããããŠãŒã¶ãŒãã¬ã³ããªãŒãªGUIã«ãã©ã°ã€ã³ãããããããã«äœ¿çšã§ãããäœã¬ãã«ã§çŠç¹ãçµã£ãããŒã«ããããšäŸ¿å©ã§ãã
ãã£ãšãããã¯ã¿ã€ããã¹ã§ãã å€èº«ããã®ã§ã¯ãªãã移ãã ã€ãŸããã»ãšãã©ã®ãŠãŒã¶ãŒã¯ããããã¯ãŒã¯çµç±ã§ããŒã¿ãéä¿¡ããåã«æé©å/å§çž®ããããšèããŠããŸãã æçš¿ãæŽæ°ããŠãããããããããŸããã
ããã«ã¡ã¯ãã¿ããª
THREE.js GLTFãšã¯ã¹ããŒã¿ãŒã䜿çšããŠããã¬ãŒã ã·ãŒã³å
šäœãgltfãªããžã§ã¯ããšããŠãšã¯ã¹ããŒãããŠããŸãã
aframeã§å®çŸ©ãããa-animationã¿ã°ãgltfãªããžã§ã¯ãã®ã¢ãã¡ãŒã·ã§ã³ã®äžéšã«ããã«ã¯ã©ãããã°ããã§ããïŒ
@donmccurdy @fernandojsg @mrdoob
ããã«ã¡ã¯@ siddhartpaiâ THREE.GLTFExporter
ã¯THREE.AnimationClip
ãªããžã§ã¯ãã®ã¿ãglTFã¢ãã¡ãŒã·ã§ã³ã«å€æããŸãããA-Frameã®ã¢ãã¡ãŒã·ã§ã³ã·ã¹ãã ã¯TweenJSã䜿çšããŸãã ãããã£ãŠãçŸåšããã¯äžå¯èœã§ãã A-FrameãŸãã¯A-FrameInspectorã§åé¡ãéãããããGLTFExporter
䜿çšããŠãå°æ¥ã®æ©èœãšããŠãªã¯ãšã¹ãããããšããå§ãããŸãã
ãã«ããããªã¢ã«ãµããŒãïŒ13536
ããªããŒã¿ãŒããæ£èŠåãããŠããªãbufferviewã®ãã¹ãŠã®éåžžã®èŠçŽ ã§ãšã©ãŒãã¹ããŒããããšã«æ°ã¥ããŸããã ããšãã°ã[0,0,0]ã®ãããªåæåãããŠããªãå€ãä¿åãããšããã®ãšã©ãŒãã¹ããŒãããŸãã
ããã¯ãšã©ãŒã§ãããèŠå/éç¥ã§ã¯ãªããããä¿®æ£ã«ææã§ããããšãããããŸãã éåžžã®bufferviewèŠçŽ ãæ£èŠåãããŠããããšã確èªããããšã«ã€ããŠã©ãæããŸããïŒ ããã§ãã[0,0,0]ã®ããã«æ£èŠåã§ããªãå€ã®å Žåãæå¹ãªåäœãã¯ãã«ã䜿çšããå¿
èŠããããŸããïŒ / cc @donmccurdy
NORMAL
ã¯æ£èŠåããå¿
èŠãããããã§ãã
https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#meshes
ããŒãã«| ãVEC3ã| 5126ïŒãããŒãïŒ| æ£èŠåãããXYZé ç¹æ³ç·
Three.jsã®éåžžã«ã¯ãã®ãããªå¶éããªãããã確èªããããšã«åæããŸããã
ã¯ãããããã[0,0,0]ã®æªäœ¿çšã®å€ã®ããã«ãå®éã®æ³ç·ããªãå Žåã¯ãæå¹ãªå€ãäœæããã ãã§å€§ââäžå€«ã§ããïŒ [1,0,0]ãšããŸãããã ãããã£ãŠããããã¡ãã¥ãŒã³ãŒããå€æŽããŠãéåžžã®å±æ§ã解æããŠããããšãæ€åºããããŒã¿ãã¥ãŒã«ä¿åããåã«åå±æ§ãæ£èŠåããå¿ èŠããããŸãã
[0,0,0]ã®æªäœ¿çšã®å€ã®ããã«ãå®éã®æ³ç·ããªãå Žåã®å¯ŸåŠæ¹æ³
ããŒã....æå¹ãªãã®ãšäº€æããŠèŠåã衚瀺ããŸããïŒ
ãããã£ãŠããããã¡ãã¥ãŒã³ãŒããå€æŽããŠãéåžžã®å±æ§ã解æããŠããããšãæ€åºããããŒã¿ãã¥ãŒã«ä¿åããåã«åå±æ§ãæ£èŠåããå¿ èŠããããŸãã
processMesh()
ã§ãããè¡ãæ¹ã奜ãã§ãã
var originalNormal = geometry.attributes.normal;
if ( hasNonNormalizedValues( originalNormal ) ) {
geometry.attributes.normal = createNormalizedAttribute( originalNormal );
}
processAccessorHere();
geometry.attributes.normal = originalNormal;
processBufferView()
ã§ãããè¡ããšãäœçœ®ãéåžžãªã©ã®ç°ãªãå±æ§éã§ããŒã¿ãå
±æããããã©ããã泚æããå¿
èŠããããããã³ãŒãã¯å°ãè€éã«ãªããŸãã ïŒç§ã¯ãããéåžžã«ãŸããªãŠãŒã¹ã±ãŒã¹ã§ããããšãç¥ã£ãŠããŸãããThree.jsã¯å¶éããŠããŸãããïŒ
ã¯ããç§ã¯ãã®ã¢ãããŒãã奜ãã§ãããšã¯ã¹ããŒãåŸã«æ³ç·ãå€æŽããããšãæããŠããŸããããåç §ãä¿åããŠçµäºåŸã«åã³æ³ç·ãæ»ãããšãã§ããã°åé¡ãããŸããã ïŒ+1ïŒãããã®å€æŽã§PRãããã·ã¥ããŠããã ããŸãããïŒ ãŸãã¯ç§ã«ãããããŠãããããã§ããïŒ
ã¯ããããŸãã ïŒããªãã¯ãããä¿®æ£ããããã«æ¥ãã§ããŸããïŒïŒ
@takahiroxãã£ããããããããšãïŒ ããããæ¥ãã§ç§ã¯èŒžåºæ¥è ã®ç¶æ ã確èªããŠããŸãã^ _ ^
ããããä»é±ã¯ãææ¥ããããŸãã
ããã§ããglTFã§ã¯ç¹å®ã®é ç¹ã®æ³ç·ãçç¥ããããšã¯ã§ããŸããããåäžã®ããªããã£ãã§ä»ã®é ç¹ãçç¥ããããšã¯ã§ããŸããã ããçš®ã®å€ãæäŸãããããããã®é ç¹ãåãé€ããããšã©ãŒãã¹ããŒããå¿ èŠããããŸãã
ç§ã¯ãŠãŒã¶ãŒã«ãšã£ãŠç©äºãç°¡åã«ãããã®ã§ãç§ã®æ祚ã¯ãããããæ£èŠåããæ°ããæ³ç·é åãäœæãã空ã®ãã®ã«ïŒ0,1,0ïŒå€ãè¿œå ããããšã§ãã
è¯ãããã§ãã 倧èŠæš¡ãªã¢ãã«ã§é床ãé
ãå Žåã¯ã checkNormals
ãªãã·ã§ã³ãªã©ãå¿
èŠã«ãªãå¯èœæ§ãããããããããå¿
èŠãšããªããŠãŒã¶ãŒã¯ããã¹ãŠã®é ç¹ãã¹ãã£ã³ããã®ã§ã¯ãªãããªããã¢ãŠãã§ããŸãã
ãããç§ã¯ã¡ããã©åãããšãæžããšããã ã£ãïŒ ïŒNS
倧èŠæš¡ãªã¢ãã«ã§é床ãé ãå Žåã¯ãcheckNormalsãªãã·ã§ã³ãªã©ãå¿ èŠã«ãªãå¯èœæ§ãããããããããå¿ èŠãšããªããŠãŒã¶ãŒã¯ããã¹ãŠã®é ç¹ãã¹ãã£ã³ããã®ã§ã¯ãªãããªããã¢ãŠãã§ããŸãã
æåã«ãã®ãªãã·ã§ã³ãªãã§PRãäœæããŸãã å¿ èŠã«å¿ããŠè¿œå ããŸãããã å人çã«ã¯ããã®ãã§ãã¯ã¯ããã»ã©é ããªããšæããŸãã
æåã«ãã®ãªãã·ã§ã³ãªãã§PRãäœæããŸãã å¿ èŠã«å¿ããŠè¿œå ããŸãããã å人çã«ã¯ããã®ãã§ãã¯ã¯ããã»ã©é ããªããšæããŸãã
åã¹ãããŒã¯ãa-painterã«ããŒããããšãã«ããããã¡å šäœãæ£èŠåããŠããŸããããéåžžã«é ããªããŸãã
æ£èŠåãããŠãããã©ããã確èªããã ãã§ãïŒ
@takahiroxãšã«ããé·ããèšç®ããå¿ èŠãããã®ã§ãããã»ã©å€ãããªããšæããŸã
ããŒããããããŸããã PRã§è©äŸ¡ããŸãã
ããã¯ãåé ç¹ã§èšç®ãè¡ãïŒçžå¯Ÿ/絶察ã¢ãŒãã¿ãŒã²ããå€æãé€ãïŒæåã®GLTFExporteræ©èœã§ããããããããã«ããŠãé ããªãå¯èœæ§ããããŸãã
ãããä»äºïŒ IMHOã¯ããäŸãã§ã¯ãªããã³ã¢ã®three.jsã«ããŒãžããå¿
èŠããããŸãã
KHR_lights_punctual
ãµããŒãããã²ã芧ãã ããã
PRhttpsïŒ//github.com/mrdoob/three.js/pull/15519ã¯KHR_lights_punctualãè¿œå ããŸãã :)
ãã®åé¡ã¯ãããã解決ã§ãããšæããŸããæ®ãã®é ç®ã¯ããã»ã©éèŠã§ã¯ãªããå©äŸ¿æ§ãæé©åã§ãããä»ã®å Žæã§è¿œè·¡ã§ããŸãã
ããã¿ããªãã¢ãŒããé©çšããŠæçµãªããžã§ã¯ãããåé€ããã¢ãŒãå€æŽã«ãã£ãŠã«ã¹ã¿ã ã·ã§ã€ãã¡ãã·ã¥ããšã¯ã¹ããŒãããæ¹æ³ãç¥ã£ãŠãã人ã¯ããŸããïŒ
ãã®è³ªåã®ããã«https://stackoverflow.com/questions/57423471/how-to-export-morph-changed-meshes-from-threejs-application
åãã£ãŠæè¬ããŸãïŒ
@ vini-guerrero GitHubã®åé¡ã§ã¯ãªãããã©ãŒã©ã ïŒhttps://discourse.threejs.org/ïŒãŸãã¯StackOverflowã䜿çšããŠãã«ããåç §ããŠãã ããã
æãåèã«ãªãã³ã¡ã³ã
ä»ã®ã¹ã¬ããã§èšã£ãããã«ãç§ã¯ããã«åãçµãã§ããŸãã