ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅Ρ Π±ΠΈΠ½Π°ΡΠ½ΡΠΉ glTF (.glb) Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ Sacred Gold
ΡΠΎΡΠΌΠ°ΡΠ° Granny 1.2 (.grn) ΠΏΡΡΠΌΠΎ Π² ΠΏΠ°ΠΌΡΡΠΈ. ΠΠ½Π° Π½ΡΠΆΠ½Π° ΠΌΠΎΠ΄Π°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅
ΠΏΡΠΈΠ½ΠΎΡΡΡ Π² ΠΈΠ³ΡΡ ΡΠ²ΠΎΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΈ ΡΠ΅ΠΌ, ΠΊΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π°Π΄ Π·Π°Π³ΡΡΠ·ΡΠΈΠΊΠΎΠΌ.
ΠΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΠ΅ Π±Π°ΠΉΡΡ GLB ΠΈ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ Π±Π°ΠΉΡΡ GRN: ΠΌΠ΅ΡΠΈ, ΡΠΊΠ΅Π»Π΅Ρ, Π²Π΅ΡΠ° ΡΠΊΠΈΠ½Π½ΠΈΠ½Π³Π°, ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Ρ ΠΈ ΡΠ΅ΠΊΡΡΡΡΡ. Π€Π°ΠΉΠ»ΠΎΠ² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π½Π΅ ΡΠΈΡΠ°Π΅Ρ ΠΈ Π½Π΅ ΠΏΠΈΡΠ΅Ρ, ΡΠ°ΠΊ ΡΡΠΎ ΠΌΠΎΠ΄ ΡΠ°ΠΌ ΡΠ΅ΡΠ°Π΅Ρ, ΠΎΡΠΊΡΠ΄Π° Π²Π·ΡΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΈ ΠΊΡΠ΄Π° ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ. ΠΡΠΎ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠ΅ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊ grn2glb, ΠΈ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠΉΡΠΈ ΠΏΡΡΡ ΡΡΠ΄Π° ΠΈ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ.
ΠΠ°ΠΊ Ρ ΡΠ°Π½ΠΈΡΡ ΠΊΠ°ΠΆΠ΄ΡΡ ΡΠ΅ΠΊΡΡΡΡΡ, ΡΠ΅ΡΠ°Π΅ΡΠ΅ Π²Ρ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠΆΠΈΠΌΠ°Π΅Ρ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ Π² VTex β ΡΠΎΡΠΌΠ°Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Sacred ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ Π²Π½ΡΡΡΠΈ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ. ΠΠΎΠΆΠ½ΠΎ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ ΡΡΡΡΠ΅ ΠΏΠΈΠΊΡΠ΅Π»ΠΈ ΠΈΠ»ΠΈ Π²ΠΎΠ²ΡΠ΅ Π½Π΅ ΠΊΠ»Π°ΡΡΡ ΠΈΡ Π² ΠΌΠΎΠ΄Π΅Π»Ρ, Π° Π½Π°Π·Π²Π°ΡΡ ΡΠ°ΠΉΠ» ΡΠ΅ΠΊΡΡΡΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°Π³ΡΡΠ·ΠΈΡ ΠΈΠ³ΡΠ°. Π’Π°ΠΊ ΡΡΡΡΠΎΠ΅Π½ΠΎ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ Sacred.
glb2grn.dll β 64-Π±ΠΈΡΠ½Π°Ρ DLL Ρ ΠΏΡΠΎΡΡΡΠΌ C ABI. Java 22 ΠΈ Π½ΠΎΠ²Π΅Π΅ Π²ΡΠ·ΡΠ²Π°Π΅Ρ Π΅Ρ
ΡΠ΅ΡΠ΅Π· FFM (Panama) Π±Π΅Π· JNI. CRT ΡΠΎΠ±ΡΠ°Π½ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΈΠ³ΡΠΎΠΊΡ Π½Π΅ Π½ΡΠΆΠ΅Π½
VC++ Redistributable.
-
Π‘ΠΎΠ±Π΅ΡΠΈΡΠ΅
glb2grn.dllΠΈ jar, ΠΊΠ°ΠΊ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Β«Π‘Π±ΠΎΡΠΊΠ°Β». ΠΠΎΡΠΎΠ²ΡΡ ΡΠ΅Π»ΠΈΠ·ΠΎΠ² ΠΏΠΎΠΊΠ° Π½Π΅Ρ. -
ΠΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΠ΅ jar ΠΊ ΠΌΠΎΠ΄Ρ:
dependencies { implementation("dev.ancaria.glb2grn:glb2grn:0.0.0-dev") } -
Π‘ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΡΠΉΡΠ΅ ΠΌΠΎΠ΄Π΅Π»Ρ. ΠΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ ΡΡΠ°Π½ΡΡ ΡΠ΅ΠΊΡΡΡΡΠ°ΠΌΠΈ VTex:
byte[] grn = Glb2Grn.convert(glbBytes);
-
Π§ΡΠΎΠ±Ρ ΠΈΠ³ΡΠ° Π·Π°Π³ΡΡΠ·ΠΈΠ»Π° ΡΠ΅ΠΊΡΡΡΡΡ ΠΈΠ· ΡΠ°ΠΉΠ»Π°, Π²ΡΠ±Π΅ΡΠΈΡΠ΅ ΡΡΠΎ Π΄Π»Ρ ΡΠ»ΠΎΡΠ°:
byte[] grn = Glb2Grn.convert(glbBytes, slot -> TextureChoice.external("textures/" + slot.name() + ".tga"));
ΠΡΠ»ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π½Π΅ ΡΠΏΡΠ°Π²ΠΈΠ»Π°ΡΡ, Π²Ρ ΠΏΠΎΠ»ΡΡΠΈΡΠ΅ Glb2GrnException Ρ ΠΏΡΠΈΡΠΈΠ½ΠΎΠΉ.
ΠΠΎΠ»Π½ΡΠΉ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡ ΠΎΠΏΠΈΡΠ°Π½ Π² include/glb2grn.h.
ΠΡΠΈΠ²ΡΠ·ΠΊΠ΅ dev.ancaria.glb2grn:glb2grn Π½ΡΠΆΠ½Π° Java 22 ΠΈΠ»ΠΈ Π½ΠΎΠ²Π΅Π΅. Jar Π½Π΅ΡΡΡ
glb2grn.dll, ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ Π²ΡΠ·ΠΎΠ²Π΅ ΡΠ°ΡΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°Π΅Ρ Π΅Ρ Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΠ°ΠΏΠΊΡ ΠΈ
ΡΠ²ΡΠ·ΡΠ²Π°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ΅ΡΠ΅Π· FFM. ΠΠ±ΡΡΠ²Π»ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ°ΠΌΠΎΠΌΡ Π½Π΅ Π½ΡΠΆΠ½ΠΎ. Π§ΡΠΎΠ±Ρ DLL
Π½Π΅ ΠΏΠΎΠΏΠ°Π΄Π°Π»Π° Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΠ°ΠΏΠΊΡ, Π·Π°Π΄Π°ΠΉΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ
glb2grn.extractDir ΡΠΎ ΡΠ²ΠΎΠ΅ΠΉ ΠΏΠ°ΠΏΠΊΠΎΠΉ Π΄ΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π°.
Glb2Grn.convert ΡΠΏΡΠ°ΡΠΈΠ²Π°Π΅Ρ Π²Π°ΡΠΈ TextureChoices ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡΠ»ΠΎΡΠ΅ ΡΠ΅ΠΊΡΡΡΡΡ.
ΠΠ΅ΡΠ½ΠΈΡΠ΅ null β ΠΈ ΡΠ»ΠΎΡ ΠΎΡΡΠ°Π½Π΅ΡΡΡ ΡΠ°ΠΊΠΈΠΌ, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΡΠΊΡΡΠ»ΡΡ. ΠΠ»Ρ ΠΏΠΎΡΠ°Π³ΠΎΠ²ΠΎΠΉ
ΡΠ°Π±ΠΎΡΡ ΠΎΡΠΊΡΠΎΠΉΡΠ΅ GlbModel: textureSlots(), setTextureFormat(...),
setTextureFileName(...), exportGrn() ΠΈ Π·Π°ΡΠ΅ΠΌ close(). Π Π°Π·Π½ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ
ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΡΡΡΡΡ Π² ΡΠ°Π·Π½ΡΡ
ΠΏΠΎΡΠΎΠΊΠ°Ρ
ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ.
| Π€ΠΎΡΠΌΠ°Ρ | ΠΠΎΠ΄ | Π§ΡΠΎ Ρ ΡΠ°Π½ΠΈΡ GRN |
|---|---|---|
FORMAT_VTEX_OPAQUE |
4 | ΠΠΈΠΊΡΠ΅Π»ΠΈ VTex Π±Π΅Π· Π°Π»ΡΡΡ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π΄Π»Ρ Π½Π΅ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΠΉ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ |
FORMAT_VTEX_ALPHA |
5 | ΠΠΈΠΊΡΠ΅Π»ΠΈ VTex Ρ Π°Π»ΡΡΠΎΠΉ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π΅ΡΠ»ΠΈ Ρ ΠΏΠΈΠΊΡΠ΅Π»Ρ Π°Π»ΡΡΠ° Π½ΠΈΠΆΠ΅ 250 |
FORMAT_RAW_RGBA |
1 | Π‘ΡΡΡΠ΅ ΠΏΠΈΠΊΡΠ΅Π»ΠΈ RGBA, ΠΏΠΎ 4 Π±Π°ΠΉΡΠ° |
FORMAT_RAW_RGBX |
0 | Π‘ΡΡΡΠ΅ ΠΏΠΈΠΊΡΠ΅Π»ΠΈ, Π°Π»ΡΡΠ° Π½Π΅ ΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ |
FORMAT_EXTERNAL |
7 | ΠΠ΅Π· ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ, ΡΠΎΠ»ΡΠΊΠΎ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°Π³ΡΡΠ·ΠΈΡ ΠΈΠ³ΡΠ° |
ΠΠ°ΡΡΠΈΠ½ΠΊΠ°, ΠΊΠΎΡΠΎΡΡΡ GLB Π½Π°Π·ΡΠ²Π°Π΅Ρ ΡΠ°ΠΉΠ»ΠΎΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ hero.tga, ΠΎΡΠΊΡΡΠ²Π°Π΅ΡΡΡ
Π²Π½Π΅ΡΠ½ΠΈΠΌ ΡΠ»ΠΎΡΠΎΠΌ Ρ ΡΡΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ. ΠΡΡΡΠΎΠ΅Π½Π½ΠΎΠΌΡ ΡΠΎΡΠΌΠ°ΡΡ Π½ΡΠΆΠ½Ρ ΠΏΠΈΠΊΡΠ΅Π»ΠΈ, ΠΏΠΎΡΡΠΎΠΌΡ
ΡΠ°ΠΊΠΎΠΉ ΡΠ»ΠΎΡ Π΅Π³ΠΎ Π½Π΅ ΠΏΡΠΈΠΌΠ΅Ρ.
ΠΠ°ΠΆΠ΅ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΡΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½Π½Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΌΠΎΠ³Π»Π° ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ, ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°
ΠΎ Π½ΠΈΡ
ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ. GlbModel.warnings() ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΡΠ΅Ρ, ΡΡΠΎ ΠΎΠ½Π° ΠΏΡΠΎΠΏΡΡΡΠΈΠ»Π° ΠΈΠ»ΠΈ
Π·Π°ΠΌΠ΅Π½ΠΈΠ»Π°, ΠΏΠΎ ΡΡΡΠΎΠΊΠ΅ Π½Π° ΡΠ»ΡΡΠ°ΠΉ: ΠΊΠ°ΡΡΠΈΠ½ΠΊΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π΅ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π»Π°ΡΡ,
ΠΏΡΠΈΠΌΠΈΡΠΈΠ² Π½Π΅ ΠΈΠ· ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ², ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊ Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠΌ Π²Π½Π΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°,
Π°Π½ΠΈΠΌΠ°ΡΠΈΡ Π±Π΅Π· ΠΊΠ»ΡΡΠ΅Π²ΡΡ
ΠΊΠ°Π΄ΡΠΎΠ². TextureSlot.hasError() ΠΈ error()
ΠΎΠ±ΡΡΡΠ½ΡΡΡ, ΠΏΠΎΡΠ΅ΠΌΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ° ΡΠ»ΠΎΡΠ° Π½Π΅ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π»Π°ΡΡ.
Glb2Grn.convert(glb, choices, warnings) ΠΏΠΎΡΠ»Π΅ ΡΠΊΡΠΏΠΎΡΡΠ° ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅
ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π²Π°ΡΠ΅ΠΌΡ Consumer<String>.
Π£ΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΡΡ DLL ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΡΠ²ΠΎΠ΅ΠΉ ΡΠ±ΠΎΡΠΊΠΎΠΉ. Π£ΠΊΠ°ΠΆΠΈΡΠ΅ ΠΏΠΎΠ»Π½ΡΠΉ ΠΏΡΡΡ ΠΊ ΡΠ²ΠΎΠ΅ΠΉ
glb2grn.dll Π² ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΌ ΡΠ²ΠΎΠΉΡΡΠ²Π΅ glb2grn.library ΠΈΠ»ΠΈ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ
ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ GLB2GRN_LIBRARY. Π‘Π²ΠΎΠΉΡΡΠ²ΠΎ Π²Π°ΠΆΠ½Π΅Π΅. Π’ΠΎΠ³Π΄Π° ΠΏΡΠΈΠ²ΡΠ·ΠΊΠ° Π·Π°Π³ΡΡΠ·ΠΈΡ ΡΡΠΎΡ
ΡΠ°ΠΉΠ» ΠΈ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΡΠ°ΡΠΏΠ°ΠΊΡΠ΅Ρ. ΠΡΠ»ΠΈ Π½Π°Π·Π²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° Π½Π΅Ρ, ΠΏΠ΅ΡΠ²ΡΠΉ Π²ΡΠ·ΠΎΠ²
Π·Π°Π²Π΅ΡΡΠΈΡΡΡ ΠΎΡΠΈΠ±ΠΊΠΎΠΉ, Π° Π½Π΅ Π²ΠΎΠ·ΡΠΌΡΡ ΡΠΏΠ°ΠΊΠΎΠ²Π°Π½Π½ΡΡ DLL. ΠΠ°ΡΠ° ΡΠ±ΠΎΡΠΊΠ° Π΄ΠΎΠ»ΠΆΠ½Π°
ΡΠΎΡ
ΡΠ°Π½ΠΈΡΡ C ABI ΠΈΠ· include/glb2grn.h: ΠΏΡΠΈ ΠΏΠ΅ΡΠ²ΠΎΠΌ
Π²ΡΠ·ΠΎΠ²Π΅ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠ° ΡΠ²Π΅ΡΡΠ΅Ρ glb2grn_api_version().
| Π€ΡΠ½ΠΊΡΠΈΡ | Π§ΡΠΎ Π΄Π΅Π»Π°Π΅Ρ |
|---|---|
glb2grn_api_version() |
ΠΠ΅ΡΡΠΈΡ ABI. Π‘Π²Π΅ΡΡΡΠ΅ Π΅Ρ Ρ GLB2GRN_API_VERSION Π΄ΠΎ Π»ΡΠ±ΡΡ
Π΄ΡΡΠ³ΠΈΡ
Π²ΡΠ·ΠΎΠ²ΠΎΠ² |
glb2grn_open(data, size) |
Π§ΠΈΡΠ°Π΅Ρ GLB ΠΈΠ· Π±Π°ΠΉΡΠΎΠ² ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ |
glb2grn_texture_count(model) |
Π§ΠΈΡΠ»ΠΎ ΡΠ»ΠΎΡΠΎΠ² ΡΠ΅ΠΊΡΡΡΡ |
glb2grn_texture_name(model, slot) |
ΠΠΌΡ ΡΠ»ΠΎΡΠ° ΠΈΠ· ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ GLB |
glb2grn_texture_file_name(model, slot) |
ΠΠΌΡ ΡΠ°ΠΉΠ»Π°, ΠΊΠΎΡΠΎΡΠΎΠ΅ GRN ΡΠΎΡ ΡΠ°Π½ΠΈΡ Π΄Π»Ρ ΡΠ»ΠΎΡΠ° |
glb2grn_texture_format(model, slot) |
ΠΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π·Π°ΠΏΠΈΡΠ΅Ρ ΡΠΊΡΠΏΠΎΡΡ |
glb2grn_texture_size(model, slot, &w, &h) |
Π Π°Π·ΠΌΠ΅Ρ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠΈ Π² ΠΏΠΈΠΊΡΠ΅Π»ΡΡ , 0 Π±Π΅Π· ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ |
glb2grn_texture_has_pixels(model, slot) |
1, Π΅ΡΠ»ΠΈ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ° Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π»Π°ΡΡ, 0, Π΅ΡΠ»ΠΈ ΠΏΠΈΠΊΡΠ΅Π»Π΅ΠΉ Π½Π΅Ρ |
glb2grn_texture_error(model, slot) |
ΠΠΎΡΠ΅ΠΌΡ ΠΊΠ°ΡΡΠΈΠ½ΠΊΠ° ΡΠ»ΠΎΡΠ° Π½Π΅ Π΄Π΅ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π»Π°ΡΡ, "", Π΅ΡΠ»ΠΈ Π²ΡΡ Π² ΠΏΠΎΡΡΠ΄ΠΊΠ΅ |
glb2grn_set_texture_format(model, slot, format) |
ΠΡΠ±ΠΈΡΠ°Π΅Ρ, ΠΊΠ°ΠΊ ΡΠΊΡΠΏΠΎΡΡ ΡΠΎΡ ΡΠ°Π½ΠΈΡ ΡΠ»ΠΎΡ |
glb2grn_set_texture_file_name(model, slot, name) |
ΠΠ°Π΄Π°ΡΡ ΠΈΠΌΡ ΡΠ°ΠΉΠ»Π°, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΠΎΡ ΡΠ°Π½ΠΈΡ GRN |
glb2grn_export_grn(model, &data, &size) |
Π‘ΠΎΠ±ΠΈΡΠ°Π΅Ρ GRN Π² Π±ΡΡΠ΅Ρ |
glb2grn_warning_count(model) |
Π§ΠΈΡΠ»ΠΎ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ ΠΏΡΠΈ ΠΎΡΠΊΡΡΡΠΈΠΈ |
glb2grn_warnings(model) |
Π’Π΅ ΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΡΠ΅ΠΊΡΡΠΎΠΌ, ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡ Π² ΡΡΡΠΎΠΊΠ΅ |
glb2grn_free(buffer) |
ΠΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅Ρ Π±ΡΡΠ΅Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ |
glb2grn_close(model) |
ΠΠ°ΠΊΡΡΠ²Π°Π΅Ρ ΠΌΠΎΠ΄Π΅Π»Ρ |
glb2grn_last_error() |
Π’Π΅ΠΊΡΡ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΠΎΡΠΈΠ±ΠΊΠΈ Π² Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅ΠΌ ΠΏΠΎΡΠΎΠΊΠ΅ |
ΠΠ°Π½Π½ΡΠ΅ GLB Π΄ΠΎΠ»ΠΆΠ½Ρ Π»Π΅ΠΆΠ°ΡΡ Π²Π½ΡΡΡΠΈ: Π² ΡΠ°Π½ΠΊΠ΅ BIN ΠΈΠ»ΠΈ Π² data URI. ΠΡΡΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΡΡΠ»Π°Π΅ΡΡΡ Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠ°ΠΉΠ», Π²ΡΠ·ΡΠ²Π°Π΅Ρ ΠΎΡΠΈΠ±ΠΊΡ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π½Π΅ ΡΠΈΡΠ°Π΅Ρ ΡΠ°ΠΉΠ»Ρ. ΠΠΌΠ΅Π½Π° ΠΏΡΠΎΡ ΠΎΠ΄ΡΡ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ ΠΈΡ Ρ ΡΠ°Π½ΠΈΡ GLB; Sacred ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ASCII.
Π’Π΅ΡΡ test_game Π±Π΅ΡΡΡ Π²ΡΠ΅ 1571 ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈΠ· PAK\models.pak, ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅Ρ
ΠΊΠ°ΠΆΠ΄ΡΡ Π² GLB ΡΠ΅ΡΠ΅Π· grn2glb ΠΈ ΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΡΠ΅Ρ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ ΡΠ΅ΡΠ΅Π· glb2grn. ΠΠ°ΠΆΠ΄Π°Ρ
ΠΌΠΎΠ΄Π΅Π»Ρ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ, ΠΈ ΠΎΠ±Π° ΠΏΠ°ΡΡΠ΅ΡΠ° Π΅Ρ ΡΠΈΡΠ°ΡΡ. ΠΡΠ΅ 1571 ΡΠΎΡ
ΡΠ°Π½ΡΡΡ
ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΈ ΠΈ ΡΠ»ΠΎΡΡ ΡΠ΅ΠΊΡΡΡΡ. Π‘Π΅ΠΌΡ ΡΠ΅ΡΡΡΡ ΠΌΠ΅ΡΠΈ Π±Π΅Π· ΡΡΠ΅ΡΠ³ΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ²: grn2glb Π½Π΅
ΠΊΠ»Π°Π΄ΡΡ ΠΈΡ
Π² GLB.
- ΠΠΈ ΠΎΠ΄Π½Ρ ΡΠΊΠΎΠ½Π²Π΅ΡΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ Π΅ΡΡ Π½Π΅ Π·Π°Π³ΡΡΠΆΠ°Π»ΠΈ Π² ΠΈΠ³ΡΠ΅. Π’Π΅ΡΡΡ Π΄ΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡ, ΡΡΠΎ GRN ΡΠΈΡΠ°Π΅ΡΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎ Ρ ΡΠ΅ΠΌ ΠΆΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΡΠΌ, Π½ΠΎ Π½Π΅ ΡΠΎ, ΡΡΠΎ Sacred ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ Π΅Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎ.
- ΠΠ½ΠΈΠΌΠ°ΡΠΈΠΈ ΡΠΎΡ ΡΠ°Π½ΡΡΡ ΠΈΠΌΠ΅Π½Π°, Π½ΠΎ Π½Π΅ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅ ΠΊΠ°Π΄ΡΡ.
- Π‘ΠΊΠ΅Π»Π΅ΡΠΎΠΌ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠΊΠΈΠ½ GLB. ΠΠ°ΠΊ ΠΌΠ΅Ρ Π΄Π΅ΡΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ Π² ΠΏΠΎΠ·Π΅, Π΅ΡΡ Π½ΠΈΠΊΡΠΎ Π½Π΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ».
- Π‘ΠΆΠ°ΡΠΈΠ΅ Draco ΠΈ meshopt ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠ΅Π½ΡΡΡ ΡΠΌΡΡΠ» Π΄Π°Π½Π½ΡΡ , ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡ ΠΊ ΠΎΡΠΈΠ±ΠΊΠ΅.
ΠΡΠΆΠ½Ρ MSVC x64 ΠΈ CMake 3.22 ΠΈΠ»ΠΈ Π½ΠΎΠ²Π΅Π΅. ΠΠ· Developer Command Prompt:
cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build build
ctest --test-dir build --output-on-failure
DLL ΠΏΠΎΡΠ²ΠΈΡΡΡ Π² build\bin\glb2grn.dll. Π’Π΅ΡΡΠ°ΠΌ test_core ΠΈ test_abi
ΠΈΠ³ΡΠ° Π½Π΅ Π½ΡΠΆΠ½Π°. test_game ΡΠΈΡΠ°Π΅Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΈΠ³ΡΡ ΠΏΠΎ ΠΏΡΡΠΈ ΠΈΠ· GLB2GRN_GAME ΠΈ
Π½ΡΠΆΠ΄Π°Π΅ΡΡΡ Π² grn2glb, ΡΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ
ΡΡΠ΄ΠΎΠΌ Ρ ΡΡΠΈΠΌ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠ΅ΠΌ. ΠΠ΅Π· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ
ΡΠ΅ΡΡ ΠΎΡΠΌΠ΅ΡΠ°Π΅Ρ ΡΠ΅Π±Ρ ΠΏΡΠΎΠΏΡΡΠ΅Π½Π½ΡΠΌ.
Gradle ΡΠΎΠ±ΠΈΡΠ°Π΅Ρ Java-ΠΏΡΠΈΠ²ΡΠ·ΠΊΡ ΠΈΠ· ΠΏΠ°ΠΏΠΊΠΈ jvm, ΠΊΠΎΠ³Π΄Π° DLL ΡΠΆΠ΅ Π΅ΡΡΡ. ΠΠ½
ΡΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°Π΅Ρ DLL Π² jar, Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΡΠ΅ΡΡΡ ΠΈ ΠΏΡΠ±Π»ΠΈΠΊΡΠ΅Ρ jar Π² Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠΉ
ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Maven:
cd jvm
./gradlew build publishToMavenLocal
ΠΠ΅Π· glb2grn.dll ΡΠ±ΠΎΡΠΊΠ° ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ ΠΈ Π½Π°Π·ΠΎΠ²ΡΡ ΠΏΡΡΡ, Π³Π΄Π΅ ΠΈΡΠΊΠ°Π»Π°.
Π― Π²ΡΠΏΡΡΠΊΠ°Ρ ΡΠ΅Π»ΠΈΠ· ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ Release Π² Actions Ρ Π½ΠΎΠΌΠ΅ΡΠΎΠΌ Π²Π΅ΡΡΠΈΠΈ. ΠΠΈ ΠΎΠ΄ΠΈΠ½ ΡΠ°ΠΉΠ»
Π½Π΅ Ρ
ΡΠ°Π½ΠΈΡ Π²Π΅ΡΡΠΈΡ: ΠΎΠ½Π° ΠΆΠΈΠ²ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ΅Π³Π΅ v<Π²Π΅ΡΡΠΈΡ>. Workflow ΡΠΎΠ±ΠΈΡΠ°Π΅Ρ
DLL, Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΡΠ΅ΡΡΡ, Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ dev.ancaria.glb2grn:glb2grn Π² Maven
Central ΠΈ ΠΆΠ΄ΡΡ, ΠΏΠΎΠΊΠ° Central Π½Π°ΡΠ½ΡΡ Π΅Π³ΠΎ ΠΎΡΠ΄Π°Π²Π°ΡΡ. ΠΠ°ΡΠ΅ΠΌ ΠΏΡΠΈΠΊΡΠ΅ΠΏΠ»ΡΠ΅Ρ ΠΊ
ΡΠ΅Π»ΠΈΠ·Ρ Π½Π° GitHub glb2grn.dll, glb2grn.jar, glb2grn.h ΠΈ ΡΠ΅ΠΊΡΡΡ ΠΎΠ±Π΅ΠΈΡ
Π»ΠΈΡΠ΅Π½Π·ΠΈΠΉ.
CI ΡΠΎΠ±ΠΈΡΠ°Π΅Ρ ΠΈ ΡΠ΅ΡΡΠΈΡΡΠ΅Ρ ΠΊΠ°ΠΆΠ΄ΡΠΉ push Π² master ΠΈ ΠΊΠ°ΠΆΠ΄ΡΠΉ pull request ΠΈ
Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ΅Ρ. ΠΠΎΡΡΠ΄ΠΎΠΊ ΡΠ΅Π»ΠΈΠ·ΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡΠΌΠΈ ΠΎΠΏΠΈΡΠ°Π½ Π² ΠΊΠΎΡΠ½Π΅Π²ΠΎΠΌ
CONTRIBUTING.
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ karolak6612 Π·Π° Π²ΡΠ΅ΠΌΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ ΡΡΠ»ΠΎ Π½Π° Π³Π»ΡΠ±ΠΎΠΊΠΎΠ΅ ΠΈΠ·ΡΡΠ΅Π½ΠΈΠ΅ ΡΠΎΡΠΌΠ°ΡΠ° Granny GRN Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΠ-Π°Π³Π΅Π½ΡΠΎΠΌ. ΠΡΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° β ΡΡΠ΅Π·Π°Π½Π½ΡΠΉ ΡΠΎΡΠΊ open-grn-converter, ΠΈ Π΅Π³ΠΎ ΠΈΡΡΠΎΡΠΈΡ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ² ΡΠΎΡ ΡΠ°Π½Π΅Π½Π° Π·Π΄Π΅ΡΡ.
Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌ FFmpeg. ΠΠΎΠ΄Π΅ΠΊ VTex ΡΠΈΡΠ°Π΅Ρ ΠΈ
ΠΏΠΈΡΠ΅Ρ Π±ΠΈΡΠΎΠ²ΡΠΉ ΠΏΠΎΡΠΎΠΊ Bink, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ ΠΈΡ
Π΄Π΅ΠΊΠΎΠ΄Π΅Ρ, Π° Π΅Π³ΠΎ ΡΠ°Π±Π»ΠΈΡΡ Π²Π·ΡΡΡ
ΠΈΠ· libavcodec/binkdata.h.
ΠΡΡ
ΠΎΠ΄Π½ΡΠΉ ΠΊΠΎΠ΄ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ MIT, ΡΠΌ. LICENSE. ΠΡΠ°Π²Π°
ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ karolak6612 ΠΈ ΠΌΠ½Π΅. ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ β ΠΊΠΎΠ΄Π΅ΠΊ VTex Π²
src/codecs/vtex_*. ΠΠ½ ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° Π΄Π΅ΠΊΠΎΠ΄Π΅ΡΠ΅ Bink ΠΈΠ· FFmpeg
(libavcodec/bink.c ΠΈ binkdata.h) ΠΈ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄
LGPL-2.1-or-later. ΠΠΎΠ»Π½ΡΠΉ ΡΠ΅ΠΊΡΡ Π»ΠΈΡΠ΅Π½Π·ΠΈΠΈ Π»Π΅ΠΆΠΈΡ Π²
LICENSES/LGPL-2.1.txt.
Π‘ΠΎΠ±ΡΠ°Π½Π½Π°Ρ glb2grn.dll ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΠΎΡ ΠΊΠΎΠ΄, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ΅Π»ΠΈΠΊΠΎΠΌ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ
ΠΏΠΎΠ΄ LGPL-2.1-or-later. ΠΠΎΠ΄ Π·Π°Π³ΡΡΠΆΠ°Π΅Ρ DLL Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΡΠ΅ΡΠ΅Π· FFM (Panama), ΠΈ
LGPL ΡΡΠΎ ΡΠ°Π·ΡΠ΅ΡΠ°Π΅Ρ: ΡΠ°ΠΌ ΠΌΠΎΠ΄ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π»ΡΠ±ΡΡ Π»ΠΈΡΠ΅Π½Π·ΠΈΡ. Jar Π½Π΅ΡΡΡ
LICENSE, LGPL-2.1.txt ΠΈ NOTICE.txt Π² META-INF/glb2grn, ΠΈ jar, ΠΊΠΎΡΠΎΡΡΠΉ
Π΅Π³ΠΎ ΡΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°Π΅Ρ, ΡΠΎΡ
ΡΠ°Π½ΡΠ΅Ρ ΠΈΡ
. Π NOTICE.txt Π½Π°ΠΏΠΈΡΠ°Π½ΠΎ, ΠΊΠ°ΠΊ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ DLL, β
ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΡΡΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΎ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ Β«JavaΒ».
cgltf, nlohmann/json
ΠΈ stb ΠΈΠ΄ΡΡ ΠΏΠΎΠ΄ ΡΠ²ΠΎΠΈΠΌΠΈ Π»ΠΈΡΠ΅Π½Π·ΠΈΡΠΌΠΈ.