From 3e46a0860ec6b415b24c34e0c6d3cdbfafded9ec Mon Sep 17 00:00:00 2001 From: aramis_acg Date: Sat, 20 Sep 2008 15:55:51 +0000 Subject: [PATCH] Added vertex color support to the DXF loader, fixed a minor bugs. Coordinate system issue still unsolved. Modified GenVertexNormals to take always the cross product of the first and the last normal of a face as face normal. Material implementation for LWO - seems to work, but there are some issues with highly complex models. Added some LWO test models Cleaned up the ./test dir - converted some BMPs to JPG to save space, Finished the matrial property list in jAssimp, some other changes, too. The Java part of the API should be working now. git-svn-id: https://assimp.svn.sourceforge.net/svnroot/assimp/trunk@156 67173fc5-114c-0410-ac8e-9d2fd5bffc1f --- CREDITS | 20 +- code/DXFLoader.cpp | 71 +- code/DXFLoader.h | 5 +- code/GenFaceNormalsProcess.cpp | 13 +- code/GenVertexNormalsProcess.cpp | 12 +- code/IFF.h | 61 +- code/LWOBLoader.cpp | 106 +-- code/LWOFileData.h | 259 ++++++-- code/LWOLoader.cpp | 477 +++++++++++--- code/LWOLoader.h | 159 ++++- code/LWOMaterial.cpp | 606 ++++++++++++++++-- code/MDRLoader.cpp | 2 +- code/SGSpatialSort.cpp | 50 +- code/SGSpatialSort.h | 41 +- code/StandardShapes.cpp | 11 +- code/StandardShapes.h | 2 +- include/aiMaterial.h | 44 +- include/aiTypes.h | 10 + port/jAssimp/README | 0 port/jAssimp/jni_bridge/JNIMesh.cpp | 2 +- port/jAssimp/src/assimp/BoneAnim.java | 10 +- port/jAssimp/src/assimp/Importer.java | 30 +- port/jAssimp/src/assimp/Material.java | 378 ++++++++++- port/jAssimp/src/assimp/PostProcessStep.java | 88 +-- port/jAssimp/src/assimp/TextureMapMode.java | 24 +- port/jAssimp/src/assimp/test/DumpToFile.java | 37 +- test/3DSFiles/IMAGE1.bmp | Bin 480054 -> 24711 bytes test/3DSFiles/fels.3ds | Bin 0 -> 13326 bytes test/LWOFiles/LWO2/hierarchy.lwo | Bin 0 -> 13388 bytes test/LWOFiles/LWO2/shader_test/CellShader.lwo | Bin 0 -> 806 bytes .../LWO2/shader_test/SuperCellShader.lwo | Bin 0 -> 926 bytes .../LWOFiles/LWO2/shader_test/fastFresnel.lwo | Bin 0 -> 864 bytes .../LWOFiles/LWO2/shader_test/realFresnel.lwo | Bin 0 -> 820 bytes workspaces/jidea5.1/jAssimp.ipr | 8 +- workspaces/vc8/assimp.vcproj | 8 + 35 files changed, 2099 insertions(+), 435 deletions(-) create mode 100644 port/jAssimp/README create mode 100644 test/3DSFiles/fels.3ds create mode 100644 test/LWOFiles/LWO2/hierarchy.lwo create mode 100644 test/LWOFiles/LWO2/shader_test/CellShader.lwo create mode 100644 test/LWOFiles/LWO2/shader_test/SuperCellShader.lwo create mode 100644 test/LWOFiles/LWO2/shader_test/fastFresnel.lwo create mode 100644 test/LWOFiles/LWO2/shader_test/realFresnel.lwo diff --git a/CREDITS b/CREDITS index adc03c8b2..e4f9e3d9f 100644 --- a/CREDITS +++ b/CREDITS @@ -7,21 +7,29 @@ The following is the list of all constributors. Thanks for your help! - Alexander Gessler, -3DS-, ASE-, DXF-, HMP-, MDL-, MD2-, MD3-, MD5-, MDC-, NFF-, PLY-, STL- and LWO-Loader, +3DS-, ASE-, DXF-, HMP-, MDL-, MD2-, MD3-, MD5-, MDC-, NFF-, PLY-, STL-, RAW-, OFF- and LWO-Loader, Configuration-Interface, AssImp-Viewer (Win32), Website (Admin and Design), admin. -Thomas Schulze, -X-Loader, Preprocessing framework. +X-Loader, Preprocessing framework. Data structure & Interface design, documentation. -R.Schmidt, Linux build, eclipse support. - Kim Kulling: -Obj-Loader, Logging, Scons-build enviroment. +Obj-Loader, Logging, Scons-build environment. - Matthias Gubisch, +Assimp.net Visual Studio 9 support, bugfixes. +- Sebastian Hempel, +PyAssimp +Compile-Bugfixes for mingw, add enviroment for static library support in make. + +- Jonathan Pokrass +supplied a bugfix concerning the scaling in the md3 loader. + - Andrew Galante, submitted patches to make Assimp compile with GCC-4, a makefile and the xcode3 workspace. @@ -31,11 +39,5 @@ tested Assimp under Windows Vista 64 Bit. - Marius Schröder allowed us to use many of his models for screenshots and testing. -- Sebastian Hempel, -Compile-Bugfixes for mingw, add enviroment for static library support in make. - -- Jonathan Pokrass -supplied a bugfix concerning the scaling in the md3 loader. - - Christian Schubert supplied various XFiles for testing purposes. diff --git a/code/DXFLoader.cpp b/code/DXFLoader.cpp index dd737ff4d..79b37eb26 100644 --- a/code/DXFLoader.cpp +++ b/code/DXFLoader.cpp @@ -63,6 +63,31 @@ using namespace Assimp; #define AI_DXF_BINARY_IDENT_LEN (24) +// color indices for DXF - 16 are supported +static aiColor4D g_aclrDxfIndexColors[] = +{ + aiColor4D (0.6f, 0.6f, 0.6f, 1.0f), + aiColor4D (1.0f, 0.0f, 0.0f, 1.0f), // red + aiColor4D (0.0f, 1.0f, 0.0f, 1.0f), // green + aiColor4D (0.0f, 0.0f, 1.0f, 1.0f), // blue + aiColor4D (0.3f, 1.0f, 0.3f, 1.0f), // light green + aiColor4D (0.3f, 0.3f, 1.0f, 1.0f), // light blue + aiColor4D (1.0f, 0.3f, 0.3f, 1.0f), // light red + aiColor4D (1.0f, 0.0f, 1.0f, 1.0f), // pink + aiColor4D (1.0f, 0.6f, 0.0f, 1.0f), // orange + aiColor4D (0.6f, 0.3f, 0.0f, 1.0f), // dark orange + aiColor4D (1.0f, 1.0f, 0.0f, 1.0f), // yellow + aiColor4D (0.3f, 0.3f, 0.3f, 1.0f), // dark gray + aiColor4D (0.8f, 0.8f, 0.8f, 1.0f), // light gray + aiColor4D (0.0f, 00.f, 0.0f, 1.0f), // black + aiColor4D (1.0f, 1.0f, 1.0f, 1.0f), // white + aiColor4D (0.6f, 0.0f, 1.0f, 1.0f) // violet +}; +#define AI_DXF_NUM_INDEX_COLORS (sizeof(g_aclrDxfIndexColors)/sizeof(g_aclrDxfIndexColors[0])) + +// invalid/unassigned color value +aiColor4D g_clrInvalid = aiColor4D(std::numeric_limits::quiet_NaN(),0.f,0.f,1.f); + // ------------------------------------------------------------------------------------------------ // Constructor to be privately used by Importer DXFImporter::DXFImporter() @@ -157,7 +182,7 @@ void DXFImporter::InternReadFile( const std::string& pFile, { // ENTITIES and BLOCKS sections - skip the whole rest, no need to waste our time with them if (!::strcmp(cursor,"ENTITIES") || !::strcmp(cursor,"BLOCKS")) - if (!ParseEntities())break; + if (!ParseEntities())break; else bRepeat = true; // other sections - skip them to make sure there will be no name conflicts else @@ -200,6 +225,21 @@ void DXFImporter::InternReadFile( const std::string& pFile, // generate the output mesh aiMesh* pMesh = pScene->mMeshes[m++] = new aiMesh(); const std::vector& vPositions = (*it).vPositions; + const std::vector& vColors = (*it).vColors; + + // check whether we need vertex colors here + aiColor4D* clrOut; + const aiColor4D* clr = NULL; + for (std::vector::const_iterator it2 = (*it).vColors.begin(), end2 = (*it).vColors.end(); + it2 != end2; ++it2) + { + if (std::numeric_limits::quiet_NaN() != (*it2).r) + { + clrOut = pMesh->mColors[0] = new aiColor4D[vPositions.size()]; + clr = &vColors[0]; + break; + } + } pMesh->mNumFaces = (unsigned int)vPositions.size() / 4u; pMesh->mFaces = new aiFace[pMesh->mNumFaces]; @@ -222,6 +262,7 @@ void DXFImporter::InternReadFile( const std::string& pFile, for (unsigned int a = 0; a < face.mNumIndices;++a) { *vpOut++ = vp[a]; + if (clr)*clrOut++ = clr[a]; face.mIndices[a] = pMesh->mNumVertices++; } vp += 4; @@ -333,6 +374,7 @@ bool DXFImporter::ParsePolyLine() LayerInfo* out = NULL; std::vector positions; + std::vector colors; std::vector indices; unsigned int flags = 0; @@ -344,10 +386,14 @@ bool DXFImporter::ParsePolyLine() { if (!::strcmp(cursor,"VERTEX")) { - aiVector3D v; + aiVector3D v;aiColor4D clr(g_clrInvalid); unsigned int idx[4] = {0xffffffff,0xffffffff,0xffffffff,0xffffffff}; - ParsePolyLineVertex(v, idx); - if (0xffffffff == idx[0])positions.push_back(v); + ParsePolyLineVertex(v, clr, idx); + if (0xffffffff == idx[0]) + { + positions.push_back(v); + colors.push_back(clr); + } else { // check whether we have a fourth coordinate @@ -413,6 +459,10 @@ bool DXFImporter::ParsePolyLine() // use a default layer if necessary if (!out)SetDefaultLayer(out); + flags = (unsigned int)(out->vPositions.size()+indices.size()); + out->vPositions.reserve(flags); + out->vColors.reserve(flags); + // generate unique vertices for (std::vector::const_iterator it = indices.begin(), end = indices.end(); it != end; ++it) @@ -424,13 +474,14 @@ bool DXFImporter::ParsePolyLine() idx = (unsigned int) positions.size(); } out->vPositions.push_back(positions[idx-1]); // indices are one-based. + out->vColors.push_back(colors[idx-1]); // indices are one-based. } return ret; } // ------------------------------------------------------------------------------------------------ -bool DXFImporter::ParsePolyLineVertex(aiVector3D& out,unsigned int* outIdx) +bool DXFImporter::ParsePolyLineVertex(aiVector3D& out,aiColor4D& clr, unsigned int* outIdx) { bool ret = false; while (GetNextToken()) @@ -455,6 +506,9 @@ bool DXFImporter::ParsePolyLineVertex(aiVector3D& out,unsigned int* outIdx) case 72: outIdx[1] = strtol10(cursor);break; case 73: outIdx[2] = strtol10(cursor);break; case 74: outIdx[3] = strtol10(cursor);break; + + // color + case 62: clr = g_aclrDxfIndexColors[strtol10(cursor) % AI_DXF_NUM_INDEX_COLORS]; break; }; if (ret)break; } @@ -468,6 +522,7 @@ bool DXFImporter::Parse3DFace() LayerInfo* out = NULL; aiVector3D vip[4]; // -- vectors are initialized to zero + aiColor4D clr(g_clrInvalid); while (GetNextToken()) { switch (groupCode) @@ -516,6 +571,9 @@ bool DXFImporter::Parse3DFace() // z position of the fourth corner case 33: vip[3].z = fast_atof(cursor);break; + + // color + case 62: clr = g_aclrDxfIndexColors[strtol10(cursor) % AI_DXF_NUM_INDEX_COLORS]; break; }; if (ret)break; } @@ -528,5 +586,8 @@ bool DXFImporter::Parse3DFace() out->vPositions.push_back(vip[1]); out->vPositions.push_back(vip[2]); out->vPositions.push_back(vip[3]); // might be equal to the third + + for (unsigned int i = 0; i < 4;++i) + out->vColors.push_back(clr); return ret; } diff --git a/code/DXFLoader.h b/code/DXFLoader.h index cc7940bdb..901c04d1e 100644 --- a/code/DXFLoader.h +++ b/code/DXFLoader.h @@ -76,6 +76,7 @@ protected: // face buffer - order is x,y,z,w v1,v2,v3 (w is equal to z if unused) std::vector vPositions; + std::vector vColors; }; @@ -149,11 +150,13 @@ protected: // ------------------------------------------------------------------- /** Parses a VERTEX element in a POLYLINE/POLYFACE * @param out Receives the output vertex. + * @param clr Receives the output vertex color - won't be modified + * if it is not existing. * @param outIdx Receives the output vertex indices, if present. * Wont't be modified otherwise. Size must be at least 4. * @return false if the end of the file was reached */ - bool ParsePolyLineVertex(aiVector3D& out,unsigned int* outIdx); + bool ParsePolyLineVertex(aiVector3D& out, aiColor4D& clr, unsigned int* outIdx); private: diff --git a/code/GenFaceNormalsProcess.cpp b/code/GenFaceNormalsProcess.cpp index b8d8b0c0e..8ac19d274 100644 --- a/code/GenFaceNormalsProcess.cpp +++ b/code/GenFaceNormalsProcess.cpp @@ -106,20 +106,11 @@ bool GenFaceNormalsProcess::GenMeshFaceNormals (aiMesh* pMesh) aiVector3D* pV1 = &pMesh->mVertices[face.mIndices[0]]; aiVector3D* pV2 = &pMesh->mVertices[face.mIndices[1]]; - aiVector3D* pV3 = &pMesh->mVertices[face.mIndices[2]]; - - aiVector3D pDelta1 = *pV2 - *pV1; - aiVector3D pDelta2 = *pV3 - *pV1; - aiVector3D vNor = pDelta1 ^ pDelta2; - vNor.Normalize(); - - //if (face.mIndices[1] > face.mIndices[2]) - // vNor *= -1.0f; + aiVector3D* pV3 = &pMesh->mVertices[face.mIndices[face.mNumIndices-1]]; + aiVector3D vNor = (*pV2 - *pV1) ^ (*pV3 - *pV1).Normalize(); for (unsigned int i = 0;i < face.mNumIndices;++i) - { pMesh->mNormals[face.mIndices[i]] = vNor; - } } return true; } diff --git a/code/GenVertexNormalsProcess.cpp b/code/GenVertexNormalsProcess.cpp index 9a1648af9..ab6f54484 100644 --- a/code/GenVertexNormalsProcess.cpp +++ b/code/GenVertexNormalsProcess.cpp @@ -116,12 +116,8 @@ bool GenVertexNormalsProcess::GenMeshVertexNormals (aiMesh* pMesh) aiVector3D* pV1 = &pMesh->mVertices[face.mIndices[0]]; aiVector3D* pV2 = &pMesh->mVertices[face.mIndices[1]]; - aiVector3D* pV3 = &pMesh->mVertices[face.mIndices[2]]; - - aiVector3D pDelta1 = *pV2 - *pV1; - aiVector3D pDelta2 = *pV3 - *pV1; - aiVector3D vNor = pDelta1 ^ pDelta2; - vNor.Normalize(); + aiVector3D* pV3 = &pMesh->mVertices[face.mIndices[face.mNumIndices-1]]; + aiVector3D vNor = (*pV2 - *pV1) ^ (*pV3 - *pV1).Normalize(); for (unsigned int i = 0;i < face.mNumIndices;++i) pMesh->mNormals[face.mIndices[i]] = vNor; @@ -146,7 +142,7 @@ bool GenVertexNormalsProcess::GenMeshVertexNormals (aiMesh* pMesh) SpatialSort vertexFinder( pMesh->mVertices, pMesh->mNumVertices, sizeof( aiVector3D)); std::vector verticesFound; - const float fLimit = cosf(this->configMaxAngle); + const float fLimit = cos(this->configMaxAngle); aiVector3D* pcNew = new aiVector3D[pMesh->mNumVertices]; for (unsigned int i = 0; i < pMesh->mNumVertices;++i) @@ -157,7 +153,6 @@ bool GenVertexNormalsProcess::GenMeshVertexNormals (aiMesh* pMesh) vertexFinder.FindPositions( posThis, posEpsilon, verticesFound); aiVector3D pcNor; - //unsigned int div = 0; for (unsigned int a = 0; a < verticesFound.size(); ++a) { unsigned int vidx = verticesFound[a]; @@ -167,7 +162,6 @@ bool GenVertexNormalsProcess::GenMeshVertexNormals (aiMesh* pMesh) continue; pcNor += pMesh->mNormals[vidx]; - //++div; } pcNor.Normalize(); pcNew[i] = pcNor; diff --git a/code/IFF.h b/code/IFF.h index 69b9fa407..31004b414 100644 --- a/code/IFF.h +++ b/code/IFF.h @@ -2,17 +2,21 @@ // Definitions for the Interchange File Format (IFF) // Alexander Gessler, 2006 -// Adapted for Assimp August 2008 +// Adapted to Assimp August 2008 #ifndef AI_IFF_H_INCLUDED #define AI_IFF_H_INCLUDED #include "ByteSwap.h" -namespace Assimp { -namespace IFF { +namespace Assimp { +namespace IFF { +#include "./../include/Compiler/pushpack1.h" + +///////////////////////////////////////////////////////////////////////////////// //! Describes an IFF chunk header +///////////////////////////////////////////////////////////////////////////////// struct ChunkHeader { //! Type of the chunk header - FourCC @@ -20,7 +24,22 @@ struct ChunkHeader //! Length of the chunk data, in bytes uint32_t length; -}; +} PACK_STRUCT; + + +///////////////////////////////////////////////////////////////////////////////// +//! Describes an IFF sub chunk header +///////////////////////////////////////////////////////////////////////////////// +struct SubChunkHeader +{ + //! Type of the chunk header - FourCC + uint32_t type; + + //! Length of the chunk data, in bytes + uint16_t length; +} PACK_STRUCT; + +#include "./../include/Compiler/poppack1.h" #define AI_IFF_FOURCC(a,b,c,d) ((uint32_t) (((uint8_t)a << 24u) | \ @@ -30,6 +49,34 @@ struct ChunkHeader #define AI_IFF_FOURCC_FORM AI_IFF_FOURCC('F','O','R','M') +///////////////////////////////////////////////////////////////////////////////// +//! Load a chunk header +//! @param outFile Pointer to the file data - points to the chunk data afterwards +//! @return Pointer to the chunk header +///////////////////////////////////////////////////////////////////////////////// +inline LE_NCONST ChunkHeader* LoadChunk(LE_NCONST uint8_t*& outFile) +{ + LE_NCONST ChunkHeader* head = (LE_NCONST ChunkHeader*) outFile; + AI_LSWAP4(head->length); + AI_LSWAP4(head->type); + outFile += sizeof(ChunkHeader); + return head; +} + +///////////////////////////////////////////////////////////////////////////////// +//! Load a sub chunk header +//! @param outFile Pointer to the file data - points to the chunk data afterwards +//! @return Pointer to the sub chunk header +///////////////////////////////////////////////////////////////////////////////// +inline LE_NCONST SubChunkHeader* LoadSubChunk(LE_NCONST uint8_t*& outFile) +{ + LE_NCONST SubChunkHeader* head = (LE_NCONST SubChunkHeader*) outFile; + AI_LSWAP2(head->length); + AI_LSWAP4(head->type); + outFile += sizeof(SubChunkHeader); + return head; +} + ///////////////////////////////////////////////////////////////////////////////// //! Read the file header and return the type of the file and its size //! @param outFile Pointer to the file data. The buffer must at @@ -37,11 +84,9 @@ struct ChunkHeader //! @param fileType Receives the type of the file //! @return 0 if everything was OK, otherwise an error message ///////////////////////////////////////////////////////////////////////////////// -inline const char* ReadHeader(const uint8_t* outFile,uint32_t& fileType) +inline const char* ReadHeader(LE_NCONST uint8_t* outFile,uint32_t& fileType) { - LE_NCONST ChunkHeader* head = (LE_NCONST ChunkHeader*) outFile; - AI_LSWAP4(head->length); - AI_LSWAP4(head->type); + LE_NCONST ChunkHeader* head = LoadChunk(outFile); if(AI_IFF_FOURCC_FORM != head->type) { return "The file is not an IFF file: FORM chunk is missing"; diff --git a/code/LWOBLoader.cpp b/code/LWOBLoader.cpp index 100d278be..524d10465 100644 --- a/code/LWOBLoader.cpp +++ b/code/LWOBLoader.cpp @@ -63,14 +63,11 @@ void LWOImporter::LoadLWOBFile() while (true) { if (mFileBuffer + sizeof(IFF::ChunkHeader) > end)break; - LE_NCONST IFF::ChunkHeader* const head = (LE_NCONST IFF::ChunkHeader*)mFileBuffer; - AI_LSWAP4(head->length); - AI_LSWAP4(head->type); - mFileBuffer += sizeof(IFF::ChunkHeader); + LE_NCONST IFF::ChunkHeader* const head = IFF::LoadChunk(mFileBuffer); + if (mFileBuffer + head->length > end) { - throw new ImportErrorException("LWOB: Invalid file, the size attribute of " - "a chunk points behind the end of the file"); + throw new ImportErrorException("LWOB: Invalid chunk length"); break; } LE_NCONST uint8_t* const next = mFileBuffer+head->length; @@ -204,104 +201,113 @@ void LWOImporter::LoadLWOBSurface(unsigned int size) LWO::Surface& surf = mSurfaces->back(); LWO::Texture* pTex = NULL; - ParseString(surf.mName,size); - mFileBuffer+=surf.mName.length()+1; - // skip one byte if the length of the surface name is odd - if (!(surf.mName.length() & 1))++mFileBuffer; + GetS0(surf.mName,size); while (true) { if (mFileBuffer + 6 > end)break; - // no proper IFF header here - the chunk length is specified as int16 - uint32_t head_type = *((LE_NCONST uint32_t*)mFileBuffer);mFileBuffer+=4; - uint16_t head_length = *((LE_NCONST uint16_t*)mFileBuffer);mFileBuffer+=2; - AI_LSWAP4(head_type); - AI_LSWAP2(head_length); - if (mFileBuffer + head_length > end) - { - throw new ImportErrorException("LWOB: Invalid file, the size attribute of " - "a surface sub chunk points behind the end of the file"); - } - LE_NCONST uint8_t* const next = mFileBuffer+head_length; - switch (head_type) + LE_NCONST IFF::SubChunkHeader* const head = IFF::LoadSubChunk(mFileBuffer); + + if (mFileBuffer + head->length > end) + throw new ImportErrorException("LWOB: Invalid surface chunk length"); + + LE_NCONST uint8_t* const next = mFileBuffer+head->length; + switch (head->type) { // diffuse color case AI_LWO_COLR: { - AI_LWO_VALIDATE_CHUNK_LENGTH(head_length,COLR,3); - surf.mColor.r = *mFileBuffer++ / 255.0f; - surf.mColor.g = *mFileBuffer++ / 255.0f; - surf.mColor.b = *mFileBuffer / 255.0f; + AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,COLR,3); + surf.mColor.r = GetU1() / 255.0f; + surf.mColor.g = GetU1() / 255.0f; + surf.mColor.b = GetU1() / 255.0f; break; } // diffuse strength ... case AI_LWO_DIFF: { - AI_LWO_VALIDATE_CHUNK_LENGTH(head_length,DIFF,2); - AI_LSWAP2P(mFileBuffer); - surf.mDiffuseValue = *((int16_t*)mFileBuffer) / 255.0f; + AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,DIFF,2); + surf.mDiffuseValue = GetU2() / 255.0f; break; } // specular strength ... case AI_LWO_SPEC: { - AI_LWO_VALIDATE_CHUNK_LENGTH(head_length,SPEC,2); - AI_LSWAP2P(mFileBuffer); - surf.mSpecularValue = *((int16_t*)mFileBuffer) / 255.0f; + AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,SPEC,2); + surf.mSpecularValue = GetU2() / 255.0f; break; } // luminosity ... case AI_LWO_LUMI: { - AI_LWO_VALIDATE_CHUNK_LENGTH(head_length,LUMI,2); - AI_LSWAP2P(mFileBuffer); - surf.mLuminosity = *((int16_t*)mFileBuffer) / 255.0f; + AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,LUMI,2); + surf.mLuminosity = GetU2() / 255.0f; break; } // transparency case AI_LWO_TRAN: { - AI_LWO_VALIDATE_CHUNK_LENGTH(head_length,TRAN,2); - AI_LSWAP2P(mFileBuffer); - surf.mTransparency = *((int16_t*)mFileBuffer) / 255.0f; + AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,TRAN,2); + surf.mTransparency = GetU2() / 255.0f; + break; + } + // surface flags + case AI_LWO_FLAG: + { + AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,FLAG,2); + uint16_t flag = GetU2(); + if (flag & 0x4 ) surf.mMaximumSmoothAngle = 1.56207f; + if (flag & 0x8 ) surf.mColorHighlights = 1.f; + if (flag & 0x100) surf.bDoubleSided = true; + break; + } + // maximum smoothing angle + case AI_LWO_SMAN: + { + AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,SMAN,4); + surf.mMaximumSmoothAngle = GetF4(); break; } // glossiness case AI_LWO_GLOS: { - AI_LWO_VALIDATE_CHUNK_LENGTH(head_length,GLOS,2); - AI_LSWAP2P(mFileBuffer); - surf.mGlossiness = float(*((int16_t*)mFileBuffer)); + AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,GLOS,2); + surf.mGlossiness = (float)GetU2(); break; } // color texture case AI_LWO_CTEX: { - pTex = &surf.mColorTexture; + surf.mColorTextures.push_back(Texture()); + pTex = &surf.mColorTextures.back(); break; } // diffuse texture case AI_LWO_DTEX: { - pTex = &surf.mDiffuseTexture; + surf.mDiffuseTextures.push_back(Texture()); + pTex = &surf.mDiffuseTextures.back(); break; } // specular texture case AI_LWO_STEX: { - pTex = &surf.mSpecularTexture; + surf.mSpecularTextures.push_back(Texture()); + pTex = &surf.mSpecularTextures.back(); break; } // bump texture case AI_LWO_BTEX: { - pTex = &surf.mBumpTexture; + surf.mBumpTextures.push_back(Texture()); + pTex = &surf.mBumpTextures.back(); break; } // transparency texture case AI_LWO_TTEX: { - pTex = &surf.mTransparencyTexture; + surf.mOpacityTextures.push_back(Texture()); + pTex = &surf.mOpacityTextures.back(); break; } // texture path @@ -309,9 +315,7 @@ void LWOImporter::LoadLWOBSurface(unsigned int size) { if (pTex) { - ParseString(pTex->mFileName,head_length); - AdjustTexturePath(pTex->mFileName); - mFileBuffer += pTex->mFileName.length(); + GetS0(pTex->mFileName,head->length); } else DefaultLogger::get()->warn("LWOB: TIMG tag was encuntered although " "there was no xTEX tag before"); @@ -320,8 +324,8 @@ void LWOImporter::LoadLWOBSurface(unsigned int size) // texture strength case AI_LWO_TVAL: { - AI_LWO_VALIDATE_CHUNK_LENGTH(head_length,TVAL,1); - if (pTex)pTex->mStrength = *mFileBuffer / 255.0f; + AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,TVAL,1); + if (pTex)pTex->mStrength = (float)GetU1()/ 255.f; else DefaultLogger::get()->warn("LWOB: TVAL tag was encuntered " "although there was no xTEX tag before"); break; diff --git a/code/LWOFileData.h b/code/LWOFileData.h index cc0c1cc3b..e245fb9d1 100644 --- a/code/LWOFileData.h +++ b/code/LWOFileData.h @@ -40,9 +40,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. /** @file Defines chunk constants used by the LWO file format -The chunks are taken from LWO2.h, found in the sourcecode of -a project called Nxabega (http://www.sourceforge.net/projects/nxabega). -I assume they are from the official LightWave SDK headers. +The chunks are taken from the official LightWave SDK headers. Original copyright notice: "Ernie Wright 17 Sep 00" */ @@ -253,12 +251,25 @@ namespace LWO { struct Face : public aiFace { Face() - : surfaceIndex(0) - , smoothGroup(0) + : surfaceIndex (0) + , smoothGroup (0) {} + Face(const Face& f) + { + *this = f; + } + unsigned int surfaceIndex; unsigned int smoothGroup; + + Face& operator=(const LWO::Face& f) + { + aiFace::operator =(f); + surfaceIndex = f.surfaceIndex; + smoothGroup = f.smoothGroup; + return *this; + } }; @@ -271,11 +282,24 @@ struct VMapEntry : dims(_dims) {} - ~VMapEntry() {delete[] rawData;} + virtual ~VMapEntry() {} + + //! allocates memory for the vertex map + virtual void Allocate(unsigned int num) + { + if (!rawData.empty())return; // return if already allocated + + register unsigned int m = num*dims; + rawData.reserve(m + (m>>2u)); // 25% as extra storage for VMADs + rawData.resize(m,0.f); + abAssigned.resize(num,false); + } std::string name; - float* rawData; unsigned int dims; + std::vector rawData; + + std::vector abAssigned; }; // --------------------------------------------------------------------------- @@ -283,16 +307,29 @@ struct VMapEntry */ struct VColorChannel : public VMapEntry { - VColorChannel(unsigned int num) + VColorChannel() : VMapEntry(4) - { - data = new aiColor4D[num]; - for (unsigned int i = 0; i < num;++i) - data[i].a = 1.0f; - rawData = (float*)data; - } + {} - aiColor4D* data; + //! need to overwrite this function - the alpha channel must + //! be initialized to 1.0 by default + virtual void Allocate(unsigned int num) + { + if (!rawData.empty())return; // return if already allocated + + register unsigned int m = num*dims; + rawData.reserve(m + (m>>2u)); // 25% as extra storage for VMADs + rawData.resize(m,0.f); + + for (std::vector::iterator it = rawData.begin(), end = rawData.end(); + it != end;++it ) + { + for (unsigned int i = 0; i< 3;++i,++it) + *it = 0.f; + *it = 1.f; + } + abAssigned.resize(num,false); + } }; // --------------------------------------------------------------------------- @@ -300,14 +337,9 @@ struct VColorChannel : public VMapEntry */ struct UVChannel : public VMapEntry { - UVChannel(unsigned int num) - : VMapEntry(3) - { - data = new aiVector3D[num]; // to make the final copying easier - rawData = (float*)data; - } - - aiVector3D* data; + UVChannel() + : VMapEntry(2) + {} }; // --------------------------------------------------------------------------- @@ -315,13 +347,9 @@ struct UVChannel : public VMapEntry */ struct WeightChannel : public VMapEntry { - WeightChannel(unsigned int num) + WeightChannel() : VMapEntry(1) - { - rawData = new float[num]; - for (unsigned int m = 0; m < num;++m) - rawData[m] = 0.f; - } + {} }; @@ -330,10 +358,59 @@ struct WeightChannel : public VMapEntry */ struct Texture { + // we write the enum values out here to make debugging easier ... + enum BlendType + { + Normal = 0, + Subtractive = 1, + Difference = 2, + Multiply = 3, + Divide = 4, + Alpha = 5, + TextureDispl = 6, + Additive = 7 + }; + + enum MappingMode + { + Planar = 0, + Cylindrical = 1, + Spherical = 2, + Cubic = 3, + FrontProjection = 4, + UV = 5 + }; + + enum Axes + { + AXIS_X = 0, + AXIS_Y = 1, + AXIS_Z = 2 + }; + + enum Wrap + { + RESET = 0, + REPEAT = 1, + MIRROR = 2, + EDGE = 3 + }; + Texture() : mClipIdx(0xffffffff) , mStrength (1.0f) , mUVChannelIndex ("unknown") + , mRealUVIndex (0xffffffff) + , enabled (true) + , blendType (Additive) + , bCanUse (true) + , mapMode (UV) + , majorAxis (AXIS_X) + , wrapAmountH (1.0f) + , wrapAmountW (1.0f) + , wrapModeWidth (REPEAT) + , wrapModeHeight (REPEAT) + , ordinal ("\x00") {} //! File name of the texture @@ -342,15 +419,38 @@ struct Texture //! Clip index unsigned int mClipIdx; - //! Strength of the texture + //! Strength of the texture - blend factor float mStrength; - - /*************** SPECIFIC TO LWO2 *********************/ uint32_t type; // type of the texture //! Name of the corresponding UV channel std::string mUVChannelIndex; + unsigned int mRealUVIndex; + + //! is the texture enabled? + bool enabled; + + //! blend type + BlendType blendType; + + //! are we able to use the texture? + bool bCanUse; + + //! mapping mode + MappingMode mapMode; + + //! major axis for planar, cylindrical, spherical projections + Axes majorAxis; + + //! wrap amount for cylindrical and spherical projections + float wrapAmountH,wrapAmountW; + + //! wrapping mode for the texture + Wrap wrapModeWidth,wrapModeHeight; + + //! ordinal string of the texture + std::string ordinal; }; // --------------------------------------------------------------------------- @@ -358,23 +458,66 @@ struct Texture */ struct Clip { - //! path to the base texture + enum Type + { + STILL, SEQ, REF, UNSUPPORTED + } type; + + Clip() + : type (UNSUPPORTED) + , idx (0) + {} + + //! path to the base texture - std::string path; + + //! reference to another CLIP + unsigned int clipRef; + + //! index of the clip + unsigned int idx; }; + +// --------------------------------------------------------------------------- +/** \brief Data structure for a LWO file shader + * + * Later + */ +struct Shader +{ + Shader() + : ordinal ("\x00") + , functionName ("unknown") + , enabled (true) + {} + + std::string ordinal; + std::string functionName; + bool enabled; +}; + +typedef std::list < Texture > TextureList; +typedef std::list < Shader > ShaderList; + // --------------------------------------------------------------------------- /** \brief Data structure for a LWO file surface (= material) */ struct Surface { Surface() - : bDoubleSided (false) - , mDiffuseValue (1.0f) - , mSpecularValue (1.0f) - , mTransparency (0.0f) - , mGlossiness (0.0f) - , mLuminosity (0.0f) - , mMaximumSmoothAngle (0.0f) // 0 == not specified + : mColor (0.78431f,0.78431f,0.78431f) + , bDoubleSided (false) + , mDiffuseValue (1.f) + , mSpecularValue (0.f) + , mTransparency (0.f) + , mGlossiness (0.4f) + , mLuminosity (0.f) + , mColorHighlights (0.f) + , mMaximumSmoothAngle (0.f) // 0 == not specified, no smoothing + , mVCMap ("") + , mIOR (1.f) // vakuum + , mBumpIntensity (1.f) {} //! Name of the surface @@ -387,23 +530,38 @@ struct Surface bool bDoubleSided; //! Various material parameters - float mDiffuseValue,mSpecularValue,mTransparency,mGlossiness,mLuminosity; + float mDiffuseValue,mSpecularValue,mTransparency,mGlossiness,mLuminosity,mColorHighlights; //! Maximum angle between two adjacent triangles //! that they can be smoothed - in degrees float mMaximumSmoothAngle; - //! Textures - Texture mColorTexture,mDiffuseTexture,mSpecularTexture, - mBumpTexture,mTransparencyTexture; + //! Vertex color map to be used to color the surface + std::string mVCMap; + + //! Names of the special shaders to be applied to the surface + ShaderList mShaders; + + //! Textures - the first entry in the list is evaluated first + TextureList mColorTextures, // color textures are added to both diffuse and specular texture stacks + mDiffuseTextures, + mSpecularTextures, + mOpacityTextures, + mBumpTextures, + mGlossinessTextures; + + //! Index of refraction + float mIOR; + + //! Bump intensity scaling + float mBumpIntensity; }; // --------------------------------------------------------------------------- #define AI_LWO_VALIDATE_CHUNK_LENGTH(length,name,size) \ if (length < size) \ { \ - DefaultLogger::get()->warn("LWO: "#name" chunk is too small"); \ - break; \ + throw new ImportErrorException("LWO: "#name" chunk is too small"); \ } \ @@ -413,6 +571,7 @@ typedef std::vector < LWO::Face > FaceList; typedef std::vector < LWO::Surface > SurfaceList; typedef std::vector < std::string > TagList; typedef std::vector < unsigned int > TagMappingTable; +typedef std::vector < unsigned int > ReferrerList; typedef std::vector < WeightChannel > WeightChannelList; typedef std::vector < VColorChannel > VColorChannelList; typedef std::vector < UVChannel > UVChannelList; @@ -433,6 +592,11 @@ struct Layer /** Temporary point list from the file */ PointList mTempPoints; + /** Lists for every point the index of another point + that has been copied from *this* point or 0xffffffff if + no copy of the point has been made */ + ReferrerList mPointReferrers; + /** Weight channel list from the file */ WeightChannelList mWeightChannels; @@ -456,6 +620,9 @@ struct Layer /** Name of the layer */ std::string mName; + + /** Pivot point of the layer */ + aiVector3D mPivot; }; typedef std::list LayerList; diff --git a/code/LWOLoader.cpp b/code/LWOLoader.cpp index a602fbff0..49bd0a096 100644 --- a/code/LWOLoader.cpp +++ b/code/LWOLoader.cpp @@ -45,6 +45,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "LWOLoader.h" #include "MaterialSystem.h" #include "StringComparison.h" +#include "SGSpatialSort.h" #include "ByteSwap.h" // public assimp headers @@ -52,11 +53,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "../include/IOSystem.h" #include "../include/aiScene.h" #include "../include/aiAssert.h" -#include "../include/DefaultLogger.h" #include "../include/assimp.hpp" // boost headers #include +#include +#include using namespace Assimp; @@ -91,12 +93,14 @@ bool LWOImporter::CanRead( const std::string& pFile, IOSystem* pIOHandler) const return true; } + // ------------------------------------------------------------------------------------------------ // Setup configuration properties void LWOImporter::SetupProperties(const Importer* pImp) { // -- no configuration options at the moment } + // ------------------------------------------------------------------------------------------------ // Imports the given file into the given scene structure. void LWOImporter::InternReadFile( const std::string& pFile, @@ -166,7 +170,10 @@ void LWOImporter::InternReadFile( const std::string& pFile, szBuff[3] = (char)(fileType); throw new ImportErrorException(std::string("Unknown LWO sub format: ") + szBuff); } + + // now, as we have loaded all data, we can resolve cross-referenced tags and clips ResolveTags(); + ResolveClips(); // now process all layers and build meshes and nodes std::vector apcMeshes; @@ -176,10 +183,10 @@ void LWOImporter::InternReadFile( const std::string& pFile, unsigned int iDefaultSurface = 0xffffffff; // index of the default surface - for (LayerList::const_iterator lit = mLayers->begin(), lend = mLayers->end(); + for (LayerList::iterator lit = mLayers->begin(), lend = mLayers->end(); lit != lend;++lit) { - const LWO::Layer& layer = *lit; + LWO::Layer& layer = *lit; // I don't know whether there could be dummy layers, but it would be possible const unsigned int meshStart = (unsigned int)apcMeshes.size(); @@ -190,7 +197,7 @@ void LWOImporter::InternReadFile( const std::string& pFile, std::vector pSorted(mSurfaces->size()+1); unsigned int i = 0; - for (FaceList::const_iterator it = layer.mFaces.begin(), end = layer.mFaces.end(); + for (FaceList::iterator it = layer.mFaces.begin(), end = layer.mFaces.end(); it != end;++it,++i) { unsigned int idx = (*it).surfaceIndex; @@ -232,8 +239,9 @@ void LWOImporter::InternReadFile( const std::string& pFile, apcMeshes.push_back(mesh); mesh->mNumFaces = (unsigned int)sorted.size(); - for (SortedRep::const_iterator it = sorted.begin(), end = sorted.end(); - it != end;++it) + // count the number of vertices + SortedRep::const_iterator it = sorted.begin(), end = sorted.end(); + for (;it != end;++it) { mesh->mNumVertices += layer.mFaces[*it].mNumIndices; } @@ -275,31 +283,45 @@ void LWOImporter::InternReadFile( const std::string& pFile, pvVC[mui] = mesh->mColors[mui] = new aiColor4D[mesh->mNumVertices]; } + // we would not need this extra array, but the code is much cleaner if we use it + // FIX: we can use the referrer ID array here. invalidate its contents + // before we resize it to avoid a unnecessary memcpy + std::vector& smoothingGroups = layer.mPointReferrers; + smoothingGroups.erase (smoothingGroups.begin(),smoothingGroups.end()); + smoothingGroups.resize(mesh->mNumFaces,0); + // now convert all faces unsigned int vert = 0; - for (SortedRep::const_iterator it = sorted.begin(), end = sorted.end(); - it != end;++it) + std::vector::iterator outIt = smoothingGroups.begin(); + for (it = sorted.begin(); it != end;++it,++outIt) { const LWO::Face& face = layer.mFaces[*it]; + *outIt = face.smoothGroup; // copy all vertices for (unsigned int q = 0; q < face.mNumIndices;++q) { register unsigned int idx = face.mIndices[q]; - *pv++ = layer.mTempPoints[idx]; + *pv = layer.mTempPoints[idx] + layer.mPivot; + pv->z *= -1.0f; // DX to OGL + pv++; // process UV coordinates for (unsigned int w = 0; w < AI_MAX_NUMBER_OF_TEXTURECOORDS;++w) { if (0xffffffff == vUVChannelIndices[w])break; - *(pvUV[w])++ = layer.mUVChannels[vUVChannelIndices[w]].data[idx]; + aiVector3D*& pp = pvUV[w]; + const aiVector2D& src = ((aiVector2D*)&layer.mUVChannels[vUVChannelIndices[w]].rawData[0])[idx]; + pp->x = src.x; + pp->y = 1.0f - src.y; // DX to OGL + pp++; } // process vertex colors for (unsigned int w = 0; w < AI_MAX_NUMBER_OF_COLOR_SETS;++w) { if (0xffffffff == vVColorIndices[w])break; - *(pvVC[w])++ = layer.mVColorChannels[vVColorIndices[w]].data[idx]; + *(pvVC[w])++ = ((aiColor4D*)&layer.mVColorChannels[vVColorIndices[w]].rawData[0])[idx]; } #if 0 @@ -308,14 +330,20 @@ void LWOImporter::InternReadFile( const std::string& pFile, { } #endif - face.mIndices[q] = vert++; + face.mIndices[q] = vert + (face.mNumIndices-q-1); } + vert += face.mNumIndices; pf->mIndices = face.mIndices; pf->mNumIndices = face.mNumIndices; unsigned int** p = (unsigned int**)&face.mIndices;*p = NULL; // make sure it won't be deleted pf++; } + + // compute normal vectors for the mesh - we can't use our GenSmoothNormal-Step here + // since it wouldn't handle smoothing groups correctly + ComputeNormals(mesh,smoothingGroups,_mSurfaces[i]); + ++p; } } @@ -352,11 +380,103 @@ void LWOImporter::InternReadFile( const std::string& pFile, GenerateNodeGraph(apcNodes); } +// ------------------------------------------------------------------------------------------------ +void LWOImporter::ComputeNormals(aiMesh* mesh, const std::vector& smoothingGroups, + const LWO::Surface& surface) +{ + // allocate output storage + mesh->mNormals = new aiVector3D[mesh->mNumVertices]; + + // First generate per-face normals + aiVector3D* out; + std::vector faceNormals; + + if (!surface.mMaximumSmoothAngle) + out = mesh->mNormals; + else + { + faceNormals.resize(mesh->mNumVertices); + out = &faceNormals[0]; + } + + aiFace* begin = mesh->mFaces, *const end = mesh->mFaces+mesh->mNumFaces; + for (; begin != end; ++begin) + { + aiFace& face = *begin; + + // LWO doc: "the normal is defined as the cross product of the first and last edges" + aiVector3D* pV1 = mesh->mVertices + face.mIndices[0]; + aiVector3D* pV2 = mesh->mVertices + face.mIndices[1]; + aiVector3D* pV3 = mesh->mVertices + face.mIndices[face.mNumIndices-1]; + + aiVector3D vNor = ((*pV2 - *pV1) ^ (*pV3 - *pV1)).Normalize(); + for (unsigned int i = 0; i < face.mNumIndices;++i) + out[face.mIndices[i]] = vNor; + } + if (!surface.mMaximumSmoothAngle)return; + + // calculate the position bounds so we have a reliable epsilon to + // check position differences against + aiVector3D minVec( 1e10f, 1e10f, 1e10f), maxVec( -1e10f, -1e10f, -1e10f); + for( unsigned int a = 0; a < mesh->mNumVertices; a++) + { + minVec.x = std::min( minVec.x, mesh->mVertices[a].x); + minVec.y = std::min( minVec.y, mesh->mVertices[a].y); + minVec.z = std::min( minVec.z, mesh->mVertices[a].z); + maxVec.x = std::max( maxVec.x, mesh->mVertices[a].x); + maxVec.y = std::max( maxVec.y, mesh->mVertices[a].y); + maxVec.z = std::max( maxVec.z, mesh->mVertices[a].z); + } + const float posEpsilon = (maxVec - minVec).Length() * 1e-5f; + + // now generate the spatial sort tree + SGSpatialSort sSort; + std::vector::const_iterator it = smoothingGroups.begin(); + for( begin = mesh->mFaces; begin != end; ++begin, ++it) + { + aiFace& face = *begin; + for (unsigned int i = 0; i < face.mNumIndices;++i) + { + register unsigned int tt = face.mIndices[i]; + sSort.Add(mesh->mVertices[tt],tt,*it); + } + } + // sort everything - this takes O(logn) time + sSort.Prepare(); + std::vector poResult;poResult.reserve(20); + + const float fLimit = cos(surface.mMaximumSmoothAngle); + + // generate vertex normals. We have O(logn) for the binary lookup, which we need + // for n elements, thus the EXPECTED complexity is O(nlogn) + for( begin = mesh->mFaces, it = smoothingGroups.begin(); begin != end; ++begin, ++it) + { + register unsigned int sg = *it; + + aiFace& face = *begin; + unsigned int* beginIdx = face.mIndices, *const endIdx = face.mIndices+face.mNumIndices; + for (; beginIdx != endIdx; ++beginIdx) + { + sSort.FindPositions(mesh->mVertices[*beginIdx],sg,posEpsilon,poResult,true); + + aiVector3D vNormals; + for (std::vector::const_iterator + a = poResult.begin(), end = poResult.end(); + a != end;++a) + { + const aiVector3D& v = faceNormals[*a]; + if (v * faceNormals[*beginIdx] < fLimit)continue; + vNormals += v; + } + vNormals.Normalize(); + mesh->mNormals[*beginIdx] = vNormals; + } + } +} + // ------------------------------------------------------------------------------------------------ void LWOImporter::AddChildren(aiNode* node, uintptr_t parent, std::vector& apcNodes) { - unsigned int numChilds = 0; - for (uintptr_t i = 0; i < (uintptr_t)apcNodes.size();++i) { if (i == parent)continue; @@ -454,57 +574,50 @@ void LWOImporter::ResolveTags() } // ------------------------------------------------------------------------------------------------ -void LWOImporter::ParseString(std::string& out,unsigned int max) +void LWOImporter::ResolveClips() { - // --- this function is used for both LWO2 and LWOB - unsigned int iCursor = 0; - const char* in = (const char*)mFileBuffer,*sz = in; - while (*in) + for( unsigned int i = 0; i < mClips.size();++i) { - if (++iCursor > max) + Clip& clip = mClips[i]; + if (Clip::REF == clip.type) { - DefaultLogger::get()->warn("LWOB: Invalid file, string is is too long"); - break; + if (clip.clipRef >= mClips.size()) + { + DefaultLogger::get()->error("LWO2: Clip referrer index is out of range"); + clip.clipRef = 0; + } + Clip& dest = mClips[clip.clipRef]; + if (Clip::REF == dest.type) + { + DefaultLogger::get()->error("LWO2: Clip references another clip reference"); + clip.type = Clip::UNSUPPORTED; + } + else + { + clip.path = dest.path; + clip.type = dest.type; + } } - ++in; } - unsigned int len = (unsigned int) (in-sz); - out = std::string(sz,len); } // ------------------------------------------------------------------------------------------------ void LWOImporter::AdjustTexturePath(std::string& out) { // --- this function is used for both LWO2 and LWOB - if (::strstr(out.c_str(), "(sequence)")) + if (!mIsLWO2 && ::strstr(out.c_str(), "(sequence)")) { // remove the (sequence) and append 000 - DefaultLogger::get()->info("LWO: Sequence of animated texture found. It will be ignored"); + DefaultLogger::get()->info("LWOB: Sequence of animated texture found. It will be ignored"); out = out.substr(0,out.length()-10) + "000"; } -} -// ------------------------------------------------------------------------------------------------ -int LWOImporter::ReadVSizedIntLWO2(uint8_t*& inout) -{ - int i; - int c = *inout;inout++; - if(c != 0xFF) + // format: drive:path/file - we need to insert a slash after the drive + std::string::size_type n = out.find_first_of(':'); + if (std::string::npos != n) { - i = c << 8; - c = *inout;inout++; - i |= c; + out.insert(n+1,"/"); } - else - { - c = *inout;inout++; - i = c << 16; - c = *inout;inout++; - i |= c << 8; - c = *inout;inout++; - i |= c; - } - return i; } // ------------------------------------------------------------------------------------------------ @@ -530,8 +643,20 @@ void LWOImporter::LoadLWOTags(unsigned int size) // ------------------------------------------------------------------------------------------------ void LWOImporter::LoadLWOPoints(unsigned int length) { - // --- this function is used for both LWO2 and LWOB - mCurLayer->mTempPoints.resize( length / 12 ); + // --- this function is used for both LWO2 and LWOB but for + // LWO2 we need to allocate 25% more storage - it could be we'll + // need to duplicate some points later. + register unsigned int regularSize = (unsigned int)mCurLayer->mTempPoints.size() + length / 12; + if (mIsLWO2) + { + mCurLayer->mTempPoints.reserve ( regularSize + (regularSize>>2u) ); + mCurLayer->mTempPoints.resize ( regularSize ); + + // initialize all point referrers with the default values + mCurLayer->mPointReferrers.reserve ( regularSize + (regularSize>>2u) ); + mCurLayer->mPointReferrers.resize ( regularSize, 0xffffffff ); + } + else mCurLayer->mTempPoints.resize( regularSize ); // perform endianess conversions #ifndef AI_BUILD_BIG_ENDIAN @@ -544,17 +669,16 @@ void LWOImporter::LoadLWOPoints(unsigned int length) // ------------------------------------------------------------------------------------------------ void LWOImporter::LoadLWO2Polygons(unsigned int length) { - uint32_t type = *((LE_NCONST uint32_t*)mFileBuffer);mFileBuffer += 4;length-=4; - AI_LSWAP4(type); + LE_NCONST uint16_t* const end = (LE_NCONST uint16_t*)(mFileBuffer+length); + uint32_t type = GetU4(); if (type != AI_LWO_FACE) { - DefaultLogger::get()->warn("LWO2: Only POLS.FACE chunsk are supported."); + DefaultLogger::get()->warn("LWO2: Only POLS.FACE chunks are supported."); return; } // first find out how many faces and vertices we'll finally need - LE_NCONST uint16_t* const end = (LE_NCONST uint16_t*)(mFileBuffer+length); LE_NCONST uint16_t* cursor = (LE_NCONST uint16_t*)mFileBuffer; unsigned int iNumFaces = 0,iNumVertices = 0; @@ -616,21 +740,22 @@ void LWOImporter::CopyFaceIndicesLWO2(FaceList::iterator& it, // ------------------------------------------------------------------------------------------------ void LWOImporter::LoadLWO2PolygonTags(unsigned int length) { - uint32_t type = *((LE_NCONST uint32_t*)mFileBuffer);mFileBuffer+=4; - AI_LSWAP4(type); + LE_NCONST uint8_t* const end = mFileBuffer+length; + + AI_LWO_VALIDATE_CHUNK_LENGTH(length,PTAG,4); + uint32_t type = GetU4(); if (type != AI_LWO_SURF && type != AI_LWO_SMGP) return; - LE_NCONST uint8_t* const end = mFileBuffer+length; - while (mFileBuffer <= end) + while (mFileBuffer < end) { unsigned int i = ReadVSizedIntLWO2(mFileBuffer) + mCurLayer->mFaceIDXOfs; - unsigned int j = ReadVSizedIntLWO2(mFileBuffer); + unsigned int j = GetU2(); if (i >= mCurLayer->mFaces.size()) { - DefaultLogger::get()->warn("LWO2: face index in ptag list is out of range"); + DefaultLogger::get()->warn("LWO2: face index in PTAG is out of range"); continue; } @@ -646,14 +771,88 @@ void LWOImporter::LoadLWO2PolygonTags(unsigned int length) } } +// ------------------------------------------------------------------------------------------------ +template +VMapEntry* FindEntry(std::vector< T >& list,const std::string& name, bool perPoly) +{ + for (typename std::vector< T >::iterator it = list.begin(), end = list.end(); + it != end; ++it) + { + if ((*it).name == name) + { + if (!perPoly) + { + DefaultLogger::get()->warn("LWO2: Found two VMAP sections with equal names"); + } + return &(*it); + } + } + list.push_back( T() ); + VMapEntry* p = &list.back(); + p->name = name; + return p; +} + +// ------------------------------------------------------------------------------------------------ +template +void CreateNewEntry(std::vector< T >& list, unsigned int srcIdx) +{ + for (typename std::vector< T >::iterator + it = list.begin(), end = list.end(); + it != end;++it) + { + T& chan = *it; + for (unsigned int a = 0; a < chan.dims;++a) + { + chan.rawData.push_back(chan.rawData[srcIdx*chan.dims+a]); + chan.abAssigned[srcIdx] = true; + chan.abAssigned.resize(chan.abAssigned.size()+1,false); + } + } +} + +// ------------------------------------------------------------------------------------------------ +void LWOImporter::DoRecursiveVMAPAssignment(VMapEntry* base, unsigned int numRead, + unsigned int idx, float* data) +{ + ai_assert(NULL != data); + LWO::ReferrerList& refList = mCurLayer->mPointReferrers; + unsigned int i; + + base->abAssigned[idx] = true; + for (i = 0; i < numRead;++i) + base->rawData[idx*base->dims+i]= data[i]; + + if (0xffffffff != (i = refList[idx])) + DoRecursiveVMAPAssignment(base,numRead,i,data); +} + +// ------------------------------------------------------------------------------------------------ +void AddToSingleLinkedList(ReferrerList& refList, unsigned int srcIdx, unsigned int destIdx) +{ + if(0xffffffff == refList[srcIdx]) + { + refList[srcIdx] = destIdx; + return; + } + AddToSingleLinkedList(refList,refList[srcIdx],destIdx); +} + // ------------------------------------------------------------------------------------------------ void LWOImporter::LoadLWO2VertexMap(unsigned int length, bool perPoly) { - unsigned int type = *((LE_NCONST uint32_t*)mFileBuffer);mFileBuffer+=4; - unsigned int dims = *((LE_NCONST uint16_t*)mFileBuffer);mFileBuffer+=2; + LE_NCONST uint8_t* const end = mFileBuffer+length; + + AI_LWO_VALIDATE_CHUNK_LENGTH(length,VMAP,6); + unsigned int type = GetU4(); + unsigned int dims = GetU2(); VMapEntry* base; + // read the name of the vertex map + std::string name; + GetS0(name,length); + switch (type) { case AI_LWO_TXUV: @@ -661,51 +860,139 @@ void LWOImporter::LoadLWO2VertexMap(unsigned int length, bool perPoly) { DefaultLogger::get()->warn("LWO2: Found UV channel with != 2 components"); } - mCurLayer->mUVChannels.push_back(UVChannel((unsigned int)mCurLayer->mTempPoints.size())); - base = &mCurLayer->mUVChannels.back(); + base = FindEntry(mCurLayer->mUVChannels,name,perPoly); + break; case AI_LWO_WGHT: if (dims != 1) { DefaultLogger::get()->warn("LWO2: found vertex weight map with != 1 components"); } - mCurLayer->mWeightChannels.push_back(WeightChannel((unsigned int)mCurLayer->mTempPoints.size())); - base = &mCurLayer->mWeightChannels.back(); + base = FindEntry(mCurLayer->mWeightChannels,name,perPoly); + break; case AI_LWO_RGB: case AI_LWO_RGBA: if (dims != 3 && dims != 4) { DefaultLogger::get()->warn("LWO2: found vertex color map with != 3&4 components"); } - mCurLayer->mVColorChannels.push_back(VColorChannel((unsigned int)mCurLayer->mTempPoints.size())); - base = &mCurLayer->mVColorChannels.back(); + base = FindEntry(mCurLayer->mVColorChannels,name,perPoly); + break; default: return; }; - - // read the name of the vertex map - ParseString(base->name,length); + base->Allocate((unsigned int)mCurLayer->mTempPoints.size()); // now read all entries in the map type = std::min(dims,base->dims); const unsigned int diff = (dims - type)<<2; - LE_NCONST uint8_t* const end = mFileBuffer+length; + LWO::FaceList& list = mCurLayer->mFaces; + LWO::PointList& pointList = mCurLayer->mTempPoints; + LWO::ReferrerList& refList = mCurLayer->mPointReferrers; + + float temp[4]; + while (mFileBuffer < end) { unsigned int idx = ReadVSizedIntLWO2(mFileBuffer) + mCurLayer->mPointIDXOfs; - if (idx > mCurLayer->mTempPoints.size()) + if (idx >= pointList.size()) { DefaultLogger::get()->warn("LWO2: vertex index in vmap/vmad is out of range"); - continue; + mFileBuffer += base->dims*4;continue; } - for (unsigned int i = 0; i < type;++i) + if (perPoly) { - base->rawData[idx*dims+i]= *((float*)mFileBuffer); - mFileBuffer += 4; + unsigned int polyIdx = ReadVSizedIntLWO2(mFileBuffer) + mCurLayer->mFaceIDXOfs; + if (base->abAssigned[idx]) + { + // we have already a VMAP entry for this vertex - thus + // we need to duplicate the corresponding polygon. + if (polyIdx >= list.size()) + { + DefaultLogger::get()->warn("LWO2: VMAD polygon index is out of range"); + mFileBuffer += base->dims*4;continue; + } + + LWO::Face& src = list[polyIdx]; + + // generate new vertex positions + for (unsigned int i = 0; i < src.mNumIndices;++i) + { + register unsigned int srcIdx = src.mIndices[i]; + + // store the index of the new vertex in the old vertex + // so we get a single linked list we can traverse in + // only one direction + refList.push_back(0xffffffff); + AddToSingleLinkedList(refList,srcIdx,(src.mIndices[i] = (unsigned int)pointList.size())); + pointList.push_back(pointList[srcIdx]); + + CreateNewEntry(mCurLayer->mVColorChannels, srcIdx ); + CreateNewEntry(mCurLayer->mUVChannels, srcIdx ); + CreateNewEntry(mCurLayer->mWeightChannels, srcIdx ); + } + } } + for (unsigned int l = 0; l < type;++l) + temp[l] = GetF4(); + + DoRecursiveVMAPAssignment(base,type,idx, temp); mFileBuffer += diff; } } +// ------------------------------------------------------------------------------------------------ +void LWOImporter::LoadLWO2Clip(unsigned int length) +{ + AI_LWO_VALIDATE_CHUNK_LENGTH(length,CLIP,10); + + mClips.push_back(LWO::Clip()); + LWO::Clip& clip = mClips.back(); + + // first - get the index of the clip + clip.idx = GetU4(); + + LE_NCONST IFF::SubChunkHeader* const head = IFF::LoadSubChunk(mFileBuffer); + switch (head->type) + { + case AI_LWO_STIL: + GetS0(clip.path,head->length); + clip.type = Clip::STILL; + break; + + case AI_LWO_ISEQ: + { + uint8_t digits = GetU1(); mFileBuffer++; + int16_t offset = GetU2(); mFileBuffer+=4; + int16_t start = GetU2(); mFileBuffer+=4; + + std::string s;std::stringstream ss; + GetS0(s,head->length);head->length -= (unsigned int)s.length()+1; + ss << s; + ss << std::setw(digits) << offset + start; + GetS0(s,head->length); + ss << s; + clip.path = ss.str(); + clip.type = Clip::SEQ; + } + break; + + case AI_LWO_STCC: + DefaultLogger::get()->warn("LWO2: Color shifted images are not supported"); + break; + + case AI_LWO_ANIM: + DefaultLogger::get()->warn("LWO2: Animated textures are not supported"); + break; + + case AI_LWO_XREF: + clip.type = Clip::REF; + clip.clipRef = GetU4(); + break; + + default: + DefaultLogger::get()->warn("LWO2: Encountered unknown CLIP subchunk"); + } +} // ------------------------------------------------------------------------------------------------ void LWOImporter::LoadLWO2File() @@ -714,14 +1001,11 @@ void LWOImporter::LoadLWO2File() while (true) { if (mFileBuffer + sizeof(IFF::ChunkHeader) > end)break; - LE_NCONST IFF::ChunkHeader* const head = (LE_NCONST IFF::ChunkHeader*)mFileBuffer; - AI_LSWAP4(head->length); - AI_LSWAP4(head->type); - mFileBuffer += sizeof(IFF::ChunkHeader); + LE_NCONST IFF::ChunkHeader* const head = IFF::LoadChunk(mFileBuffer); + if (mFileBuffer + head->length > end) { - throw new ImportErrorException("LWOB: Invalid file, the size attribute of " - "a chunk points behind the end of the file"); + throw new ImportErrorException("LWO2: Chunk length points behind the file"); break; } LE_NCONST uint8_t* const next = mFileBuffer+head->length; @@ -738,9 +1022,13 @@ void LWOImporter::LoadLWO2File() AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,LAYR,16); - // and parse its properties - mFileBuffer += 16; - ParseString(layer.mName,head->length-16); + // and parse its properties, e.g. the pivot point + mFileBuffer += 2; + mCurLayer->mPivot.x = GetF4(); + mCurLayer->mPivot.y = GetF4(); + mCurLayer->mPivot.z = GetF4(); + mFileBuffer += 2; + GetS0(layer.mName,head->length-16); // if the name is empty, generate a default name if (layer.mName.empty()) @@ -751,7 +1039,7 @@ void LWOImporter::LoadLWO2File() } if (mFileBuffer + 2 <= next) - layer.mParent = *((uint16_t*)mFileBuffer); + layer.mParent = GetU2(); break; } @@ -765,11 +1053,17 @@ void LWOImporter::LoadLWO2File() break; } // vertex tags - //case AI_LWO_VMAD: + case AI_LWO_VMAD: + if (mCurLayer->mFaces.empty()) + { + DefaultLogger::get()->warn("LWO2: Unexpected VMAD chunk"); + break; + } + // --- intentionally no break here case AI_LWO_VMAP: { if (mCurLayer->mTempPoints.empty()) - DefaultLogger::get()->warn("LWO2: Unexpected VMAD/VMAP chunk"); + DefaultLogger::get()->warn("LWO2: Unexpected VMAP chunk"); else LoadLWO2VertexMap(head->length,head->type == AI_LWO_VMAD); break; } @@ -804,6 +1098,13 @@ void LWOImporter::LoadLWO2File() LoadLWO2Surface(head->length); break; } + + // clip chunk + case AI_LWO_CLIP: + { + LoadLWO2Clip(head->length); + break; + } } mFileBuffer = next; } diff --git a/code/LWOLoader.h b/code/LWOLoader.h index f33c19120..5fc01ee6f 100644 --- a/code/LWOLoader.h +++ b/code/LWOLoader.h @@ -43,9 +43,10 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define AI_LWOLOADER_H_INCLUDED #include "../include/aiTypes.h" +#include "../include/DefaultLogger.h" -#include "BaseImporter.h" #include "LWOFileData.h" +#include "BaseImporter.h" #include "MaterialSystem.h" struct aiTexture; @@ -63,6 +64,7 @@ using namespace LWO; * Methods named "xxx" are used to preprocess the loaded data - * they aren't specific to one format version, either */ +// --------------------------------------------------------------------------- class LWOImporter : public BaseImporter { friend class Importer; @@ -120,6 +122,17 @@ private: */ void LoadLWO2File(); + + // ------------------------------------------------------------------- + /** Parsing functions used for all file format versions + */ + inline void GetS0(std::string& out,unsigned int max); + inline float GetF4(); + inline uint32_t GetU4(); + inline uint16_t GetU2(); + inline uint8_t GetU1(); + + // ------------------------------------------------------------------- /** Loads a surface chunk from an LWOB file * @param size Maximum size to be read, in bytes. @@ -135,9 +148,18 @@ private: // ------------------------------------------------------------------- /** Loads a texture block from a LWO2 file. * @param size Maximum size to be read, in bytes. - * @param type Type of the texture block - PROC, GRAD or IMAP + * @param head Header of the SUF.BLOK header */ - void LoadLWO2TextureBlock(uint32_t type, unsigned int size ); + void LoadLWO2TextureBlock(LE_NCONST IFF::SubChunkHeader* head, + unsigned int size ); + + // ------------------------------------------------------------------- + /** Loads a shader block from a LWO2 file. + * @param size Maximum size to be read, in bytes. + * @param head Header of the SUF.BLOK header + */ + void LoadLWO2ShaderBlock(LE_NCONST IFF::SubChunkHeader* head, + unsigned int size ); // ------------------------------------------------------------------- /** Loads an image map from a LWO2 file @@ -183,6 +205,12 @@ private: */ void LoadLWOPoints(unsigned int length); + // ------------------------------------------------------------------- + /** Load a clip from a CLIP chunk + * @param length Size of the chunk + */ + void LoadLWO2Clip(unsigned int length); + // ------------------------------------------------------------------- /** Count vertices and faces in a LWOB/LWO2 file @@ -206,6 +234,7 @@ private: LE_NCONST uint16_t*& cursor, const uint16_t* const end); + // ------------------------------------------------------------------- void CopyFaceIndicesLWOB(LWO::FaceList::iterator& it, LE_NCONST uint16_t*& cursor, const uint16_t* const end, @@ -213,14 +242,27 @@ private: // ------------------------------------------------------------------- /** Resolve the tag and surface lists that have been loaded. - * Generates the mMapping table. + * Generates the mMapping table. */ void ResolveTags(); // ------------------------------------------------------------------- - /** Parse a string from the current file position + /** Resolve the clip list that has been loaded. + * Replaces clip references with real clips. */ - void ParseString(std::string& out,unsigned int max); + void ResolveClips(); + + // ------------------------------------------------------------------- + /** Add a texture list to an output material description. + * + * @param pcMat Output material + * @param in Input texture list + * @param type Type identifier of the texture list. This is the string + * that appears in the middle of all material keys - e.g. "diffuse", + * "shininess", "glossiness" or "specular". + */ + bool HandleTextures(MaterialHelper* pcMat, const TextureList& in, + const char* type); // ------------------------------------------------------------------- /** Adjust a texture path @@ -241,10 +283,15 @@ private: * @param out Output list. The members are indices into the * UV/VC channel lists of the layer */ - void FindUVChannels(const LWO::Surface& surf, - const LWO::Layer& layer, + void FindUVChannels(/*const*/ LWO::Surface& surf, + /*const*/ LWO::Layer& layer, unsigned int out[AI_MAX_NUMBER_OF_TEXTURECOORDS]); + // ------------------------------------------------------------------- + void FindUVChannels(LWO::TextureList& list, LWO::Layer& layer, + unsigned int out[AI_MAX_NUMBER_OF_TEXTURECOORDS], unsigned int& next); + + // ------------------------------------------------------------------- void FindVCChannels(const LWO::Surface& surf, const LWO::Layer& layer, unsigned int out[AI_MAX_NUMBER_OF_COLOR_SETS]); @@ -271,6 +318,27 @@ private: */ int ReadVSizedIntLWO2(uint8_t*& inout); + // ------------------------------------------------------------------- + /** Assign a value from a VMAP to a vertex and all vertices + * attached to it. + * @param base VMAP destination data + * @param numRead Number of float's to be read + * @param idx Absolute index of the first vertex + * @param data Value of the VMAP to be assigned - read numRead + * floats from this array. + */ + void DoRecursiveVMAPAssignment(VMapEntry* base, unsigned int numRead, + unsigned int idx, float* data); + + // ------------------------------------------------------------------- + /** Compute normal vectors for a mesh + * @param mesh Input mesh + * @param smoothingGroups Smoothing-groups-per-face array + * @param surface Surface for the mesh + */ + void ComputeNormals(aiMesh* mesh, const std::vector& smoothingGroups, + const LWO::Surface& surface); + protected: /** true if the file is a LWO2 file*/ @@ -305,6 +373,81 @@ protected: aiScene* pScene; }; + +// ------------------------------------------------------------------------------------------------ +inline float LWOImporter::GetF4() +{ + float f = *((float*)mFileBuffer);mFileBuffer += 4; + AI_LSWAP4(f); + return f; +} + +// ------------------------------------------------------------------------------------------------ +inline uint32_t LWOImporter::GetU4() +{ + uint32_t f = *((uint32_t*)mFileBuffer);mFileBuffer += 4; + AI_LSWAP4(f); + return f; +} + +// ------------------------------------------------------------------------------------------------ +inline uint16_t LWOImporter::GetU2() +{ + uint16_t f = *((uint16_t*)mFileBuffer);mFileBuffer += 2; + AI_LSWAP2(f); + return f; +} + +// ------------------------------------------------------------------------------------------------ +inline uint8_t LWOImporter::GetU1() +{ + return *mFileBuffer++; +} + +// ------------------------------------------------------------------------------------------------ +inline int LWOImporter::ReadVSizedIntLWO2(uint8_t*& inout) +{ + int i; + int c = *inout;inout++; + if(c != 0xFF) + { + i = c << 8; + c = *inout;inout++; + i |= c; + } + else + { + c = *inout;inout++; + i = c << 16; + c = *inout;inout++; + i |= c << 8; + c = *inout;inout++; + i |= c; + } + return i; +} + +// ------------------------------------------------------------------------------------------------ +inline void LWOImporter::GetS0(std::string& out,unsigned int max) +{ + unsigned int iCursor = 0; + const char*sz = (const char*)mFileBuffer; + while (*mFileBuffer) + { + if (++iCursor > max) + { + DefaultLogger::get()->warn("LWO: Invalid file, string is is too long"); + break; + } + ++mFileBuffer; + } + unsigned int len = (unsigned int) ((const char*)mFileBuffer-sz); + out = std::string(sz,len); + mFileBuffer += (len&0x1 ? 1 : 2); +} + + + } // end of namespace Assimp #endif // AI_LWOIMPORTER_H_INCLUDED diff --git a/code/LWOMaterial.cpp b/code/LWOMaterial.cpp index 3f655aaf4..cadd8dfb9 100644 --- a/code/LWOMaterial.cpp +++ b/code/LWOMaterial.cpp @@ -58,6 +58,142 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. using namespace Assimp; +// ------------------------------------------------------------------------------------------------ +template +T lerp(const T& one, const T& two, float val) +{ + return one + (two-one)*val; +} + +// ------------------------------------------------------------------------------------------------ +inline aiTextureMapMode GetMapMode(LWO::Texture::Wrap in) +{ + switch (in) + { + case LWO::Texture::REPEAT: + return aiTextureMapMode_Wrap; + case LWO::Texture::MIRROR: + return aiTextureMapMode_Mirror; + case LWO::Texture::RESET: + DefaultLogger::get()->warn("LWO2: Unsupported texture map mode: RESET"); + case LWO::Texture::EDGE: + return aiTextureMapMode_Clamp; + } + return (aiTextureMapMode)0; +} + +// ------------------------------------------------------------------------------------------------ +bool LWOImporter::HandleTextures(MaterialHelper* pcMat, const TextureList& in, const char* type) +{ + ai_assert(NULL != pcMat && NULL != type); + + unsigned int cur = 0, temp = 0; + char buffer[512]; + aiString s; + bool ret = false; + + for (TextureList::const_iterator it = in.begin(), end = in.end(); + it != end;++it) + { + if (!(*it).enabled || !(*it).bCanUse || 0xffffffff == (*it).mRealUVIndex)continue; + ret = true; + + // add the path to the texture + sprintf(buffer,"$tex.file.%s[%i]",type,cur); + + // The older LWOB format does not use indirect references to clips. + // The file name of a texture is directly specified in the tex chunk. + if (mIsLWO2) + { + // find the corresponding clip + ClipList::iterator clip = mClips.begin(); + temp = (*it).mClipIdx; + for (ClipList::iterator end = mClips.end(); clip != end; ++clip) + { + if ((*clip).idx == temp) + { + break; + } + } + if (mClips.end() == clip) + { + DefaultLogger::get()->error("LWO2: Clip index is out of bounds"); + temp = 0; + } + if (Clip::UNSUPPORTED == (*clip).type) + { + DefaultLogger::get()->error("LWO2: Clip type is not supported"); + continue; + } + AdjustTexturePath((*clip).path); + s.Set((*clip).path); + } + else + { + std::string ss = (*it).mFileName; + if (!ss.length()) + { + DefaultLogger::get()->error("LWOB: Empty file name"); + continue; + } + AdjustTexturePath(ss); + s.Set(ss); + } + pcMat->AddProperty(&s,buffer); + + // add the blend factor + sprintf(buffer,"$tex.blend.%s[%i]",type,cur); + pcMat->AddProperty(&(*it).mStrength,1,buffer); + + // add the blend operation + sprintf(buffer,"$tex.op.%s[%i]",type,cur); + switch ((*it).blendType) + { + case LWO::Texture::Normal: + case LWO::Texture::Multiply: + temp = (unsigned int)aiTextureOp_Multiply; + break; + + case LWO::Texture::Subtractive: + case LWO::Texture::Difference: + temp = (unsigned int)aiTextureOp_Subtract; + break; + + case LWO::Texture::Divide: + temp = (unsigned int)aiTextureOp_Divide; + break; + + case LWO::Texture::Additive: + temp = (unsigned int)aiTextureOp_Add; + break; + + default: + temp = (unsigned int)aiTextureOp_Multiply; + DefaultLogger::get()->warn("LWO2: Unsupported texture blend mode: alpha or displacement"); + + } + pcMat->AddProperty((int*)&temp,1,buffer); + + // add the UV source index + sprintf(buffer,"$tex.uvw.%s[%i]",type,cur); + temp = (*it).mRealUVIndex; + pcMat->AddProperty((int*)&temp,1,buffer); + + // add the u-wrapping + sprintf(buffer,"$tex.mapmodeu.%s[%i]",type,cur); + temp = (unsigned int)GetMapMode((*it).wrapModeWidth); + pcMat->AddProperty((int*)&temp,1,buffer); + + // add the v-wrapping + sprintf(buffer,"$tex.mapmodev.%s[%i]",type,cur); + temp = (unsigned int)GetMapMode((*it).wrapModeHeight); + pcMat->AddProperty((int*)&temp,1,buffer); + + ++cur; + } + return ret; +} + // ------------------------------------------------------------------------------------------------ void LWOImporter::ConvertMaterial(const LWO::Surface& surf,MaterialHelper* pcMat) { @@ -68,13 +204,19 @@ void LWOImporter::ConvertMaterial(const LWO::Surface& surf,MaterialHelper* pcMat int i = surf.bDoubleSided ? 1 : 0; pcMat->AddProperty(&i,1,AI_MATKEY_TWOSIDED); + + // add the refraction index and the bump intensity + pcMat->AddProperty(&surf.mIOR,1,AI_MATKEY_REFRACTI); + pcMat->AddProperty(&surf.mBumpIntensity,1,AI_MATKEY_BUMPSCALING); + aiShadingMode m; if (surf.mSpecularValue && surf.mGlossiness) { - // this is only an assumption, needs to be confirmed. - // the values have been tweaked by hand and seem to be correct. float fGloss; - if (mIsLWO2)fGloss = surf.mGlossiness * 50.0f; + if (mIsLWO2) + { + fGloss = pow( surf.mGlossiness*10.0f+2.0f, 2.0f); + } else { if (16.0f >= surf.mGlossiness)fGloss = 6.0f; @@ -85,18 +227,14 @@ void LWOImporter::ConvertMaterial(const LWO::Surface& surf,MaterialHelper* pcMat pcMat->AddProperty(&surf.mSpecularValue,1,AI_MATKEY_SHININESS_STRENGTH); pcMat->AddProperty(&fGloss,1,AI_MATKEY_SHININESS); + m = aiShadingMode_Phong; } - - // (the diffuse value is just a scaling factor) - aiColor3D clr = surf.mColor; - clr.r *= surf.mDiffuseValue; - clr.g *= surf.mDiffuseValue; - clr.b *= surf.mDiffuseValue; - pcMat->AddProperty(&clr,1,AI_MATKEY_COLOR_DIFFUSE); + else m = aiShadingMode_Gouraud; // specular color - clr.b = clr.g = clr.r = surf.mSpecularValue; + aiColor3D clr = lerp( aiColor3D(1.f,1.f,1.f), surf.mColor, surf.mColorHighlights ); pcMat->AddProperty(&clr,1,AI_MATKEY_COLOR_SPECULAR); + pcMat->AddProperty(&surf.mSpecularValue,1,AI_MATKEY_SHININESS_STRENGTH); // emissive color // (luminosity is not really the same but it affects the surface in @@ -108,15 +246,113 @@ void LWOImporter::ConvertMaterial(const LWO::Surface& surf,MaterialHelper* pcMat float f = 1.0f-surf.mTransparency; pcMat->AddProperty(&f,1,AI_MATKEY_OPACITY); - // now handle all textures ... - // TODO + // ADD TEXTURES to the material + // TODO: find out how we can handle COLOR textures correctly... + bool b = HandleTextures(pcMat,surf.mColorTextures,"diffuse"); + b = (b || HandleTextures(pcMat,surf.mDiffuseTextures,"diffuse")); + HandleTextures(pcMat,surf.mSpecularTextures,"specular"); + HandleTextures(pcMat,surf.mGlossinessTextures,"shininess"); + HandleTextures(pcMat,surf.mBumpTextures,"height"); + HandleTextures(pcMat,surf.mOpacityTextures,"opacity"); + + // now we need to know which shader we must use + // iterate through the shader list of the surface and + // search for a name we know + for (ShaderList::const_iterator it = surf.mShaders.begin(), end = surf.mShaders.end(); + it != end;++it) + { + if (!(*it).enabled)continue; + if ((*it).functionName == "LW_SuperCelShader" || + (*it).functionName == "AH_CelShader") + { + m = aiShadingMode_Toon; + break; + } + else if ((*it).functionName == "LW_RealFresnel" || + (*it).functionName == "LW_FastFresnel") + { + m = aiShadingMode_Fresnel; + break; + } + else + { + DefaultLogger::get()->warn("LWO2: Unknown surface shader: " + (*it).functionName); + } + } + if (surf.mMaximumSmoothAngle <= 0.0f)m = aiShadingMode_Flat; + pcMat->AddProperty((int*)&m,1,AI_MATKEY_SHADING_MODEL); + + // (the diffuse value is just a scaling factor) + // If a diffuse texture is set, we set this value to 1.0 + clr = (b ? aiColor3D(1.f,1.f,1.f) : surf.mColor); + clr.r *= surf.mDiffuseValue; + clr.g *= surf.mDiffuseValue; + clr.b *= surf.mDiffuseValue; + pcMat->AddProperty(&clr,1,AI_MATKEY_COLOR_DIFFUSE); } // ------------------------------------------------------------------------------------------------ -void LWOImporter::FindUVChannels(const LWO::Surface& surf, const LWO::Layer& layer, +void LWOImporter::FindUVChannels(LWO::TextureList& list, LWO::Layer& layer, + unsigned int out[AI_MAX_NUMBER_OF_TEXTURECOORDS], unsigned int& next) +{ + for (TextureList::iterator it = list.begin(), end = list.end(); + it != end;++it) + { + if (!(*it).enabled || !(*it).bCanUse || 0xffffffff != (*it).mRealUVIndex)continue; + switch ((*it).mapMode) + { + // TODO: implement these special mappings ... + case LWO::Texture::Spherical: + case LWO::Texture::Cylindrical: + case LWO::Texture::Cubic: + case LWO::Texture::Planar: + case LWO::Texture::FrontProjection: + + DefaultLogger::get()->warn("LWO2: Only UV mapping is currently supported."); + continue; + + default: ; + } + for (unsigned int i = 0; i < layer.mUVChannels.size();++i) + { + if ((*it).mUVChannelIndex == layer.mUVChannels[i].name) + { + // check whether we have this channel already + for (unsigned int m = 0; m < next;++m) + { + if (i == out[m]) + { + (*it).mRealUVIndex = m; + } + } + if (0xffffffff == (*it).mRealUVIndex) + { + (*it).mRealUVIndex = next; + out[next++] = i; + if (AI_MAX_NUMBER_OF_TEXTURECOORDS != next) + out[next] = 0xffffffff; + break; + } + } + } + if (0xffffffff == (*it).mRealUVIndex) + DefaultLogger::get()->error("LWO2: Unable to find matching UV channel for a texture"); + } +} + +// ------------------------------------------------------------------------------------------------ +void LWOImporter::FindUVChannels(LWO::Surface& surf, LWO::Layer& layer, unsigned int out[AI_MAX_NUMBER_OF_TEXTURECOORDS]) { out[0] = 0xffffffff; + unsigned int next = 0; + + FindUVChannels(surf.mColorTextures,layer,out,next); + FindUVChannels(surf.mDiffuseTextures,layer,out,next); + FindUVChannels(surf.mSpecularTextures,layer,out,next); + FindUVChannels(surf.mGlossinessTextures,layer,out,next); + FindUVChannels(surf.mOpacityTextures,layer,out,next); + FindUVChannels(surf.mBumpTextures,layer,out,next); } // ------------------------------------------------------------------------------------------------ @@ -124,41 +360,240 @@ void LWOImporter::FindVCChannels(const LWO::Surface& surf, const LWO::Layer& lay unsigned int out[AI_MAX_NUMBER_OF_COLOR_SETS]) { out[0] = 0xffffffff; + if (surf.mVCMap.length()) + { + for (unsigned int i = 0; i < layer.mVColorChannels.size();++i) + { + if (surf.mVCMap == layer.mVColorChannels[i].name) + { + out[0] = i; + out[1] = 0xffffffff; + return; + } + } + DefaultLogger::get()->warn("LWO2: Unable to find vertex color channel: " + surf.mVCMap); + } } // ------------------------------------------------------------------------------------------------ void LWOImporter::LoadLWO2ImageMap(unsigned int size, LWO::Texture& tex ) { - //LE_NCONST uint8_t* const end = mFileBuffer + size; + LE_NCONST uint8_t* const end = mFileBuffer + size; + while (true) + { + if (mFileBuffer + 6 >= end)break; + LE_NCONST IFF::SubChunkHeader* const head = IFF::LoadSubChunk(mFileBuffer); + + if (mFileBuffer + head->length > end) + throw new ImportErrorException("LWO2: Invalid SURF.BLOCK chunk length"); + + LE_NCONST uint8_t* const next = mFileBuffer+head->length; + switch (head->type) + { + case AI_LWO_PROJ: + tex.wrapModeWidth = (Texture::Wrap)GetU2(); + tex.wrapModeHeight = (Texture::Wrap)GetU2(); + break; + case AI_LWO_AXIS: + tex.majorAxis = (Texture::Axes)GetU2(); + break; + case AI_LWO_IMAG: + tex.mClipIdx = GetU2(); + break; + case AI_LWO_VMAP: + GetS0(tex.mUVChannelIndex,head->length); + break; + case AI_LWO_WRPH: + tex.wrapAmountH = GetF4(); + break; + case AI_LWO_WRPW: + tex.wrapAmountW = GetF4(); + break; + } + mFileBuffer = next; + } } // ------------------------------------------------------------------------------------------------ void LWOImporter::LoadLWO2Procedural(unsigned int size, LWO::Texture& tex ) { // --- not supported at the moment + DefaultLogger::get()->error("LWO2: Found procedural texture, this is not supported"); + tex.bCanUse = false; } // ------------------------------------------------------------------------------------------------ void LWOImporter::LoadLWO2Gradient(unsigned int size, LWO::Texture& tex ) { // --- not supported at the moment + DefaultLogger::get()->error("LWO2: Found gradient texture, this is not supported"); + tex.bCanUse = false; } // ------------------------------------------------------------------------------------------------ void LWOImporter::LoadLWO2TextureHeader(unsigned int size, LWO::Texture& tex ) { - //LE_NCONST uint8_t* const end = mFileBuffer + size; + LE_NCONST uint8_t* const end = mFileBuffer + size; + + // get the ordinal string + GetS0( tex.ordinal, size); + + // we could crash later if this is an empty string ... + if (!tex.ordinal.length()) + { + DefaultLogger::get()->error("LWO2: Ill-formed SURF.BLOK ordinal string"); + tex.ordinal = "\x00"; + } + while (true) + { + if (mFileBuffer + 6 >= end)break; + LE_NCONST IFF::SubChunkHeader* const head = IFF::LoadSubChunk(mFileBuffer); + + if (mFileBuffer + head->length > end) + throw new ImportErrorException("LWO2: Invalid texture header chunk length"); + + LE_NCONST uint8_t* const next = mFileBuffer+head->length; + switch (head->type) + { + case AI_LWO_CHAN: + tex.type = GetU4(); + break; + case AI_LWO_ENAB: + tex.enabled = GetU2() ? true : false; + break; + case AI_LWO_OPAC: + tex.blendType = (Texture::BlendType)GetU2(); + tex.mStrength = GetF4(); + break; + } + mFileBuffer = next; + } } // ------------------------------------------------------------------------------------------------ -void LWOImporter::LoadLWO2TextureBlock(uint32_t type, unsigned int size ) +void LWOImporter::LoadLWO2TextureBlock(LE_NCONST IFF::SubChunkHeader* head, unsigned int size ) { - //LE_NCONST uint8_t* const end = mFileBuffer + size; + ai_assert(!mSurfaces->empty()); + LWO::Surface& surf = mSurfaces->back(); + LWO::Texture tex; - //LWO::Surface& surf = mSurfaces->back(); - //LWO::Texture tex; + // load the texture header + LoadLWO2TextureHeader(head->length,tex); + size -= head->length + 6; // now get the exact type of the texture + switch (head->type) + { + case AI_LWO_PROC: + LoadLWO2Procedural(size,tex); + break; + case AI_LWO_GRAD: + LoadLWO2Gradient(size,tex); + break; + case AI_LWO_IMAP: + LoadLWO2ImageMap(size,tex); + } + + // get the destination channel + TextureList* listRef = NULL; + switch (tex.type) + { + case AI_LWO_COLR: + listRef = &surf.mColorTextures;break; + case AI_LWO_DIFF: + listRef = &surf.mDiffuseTextures;break; + case AI_LWO_SPEC: + listRef = &surf.mSpecularTextures;break; + case AI_LWO_GLOS: + listRef = &surf.mGlossinessTextures;break; + case AI_LWO_BUMP: + listRef = &surf.mBumpTextures;break; + case AI_LWO_TRAN: + listRef = &surf.mOpacityTextures;break; + default: + DefaultLogger::get()->warn("LWO2: Encountered unknown texture type"); + return; + } + + // now attach the texture to the parent surface - sort by ordinal string + for (TextureList::iterator it = listRef->begin(); + it != listRef->end(); ++it) + { + if (::strcmp(tex.ordinal.c_str(),(*it).ordinal.c_str()) < 0) + { + listRef->insert(it,tex); + return; + } + } + listRef->push_back(tex); +} + +// ------------------------------------------------------------------------------------------------ +void LWOImporter::LoadLWO2ShaderBlock(LE_NCONST IFF::SubChunkHeader* head, unsigned int size ) +{ + LE_NCONST uint8_t* const end = mFileBuffer + size; + + ai_assert(!mSurfaces->empty()); + LWO::Surface& surf = mSurfaces->back(); + LWO::Shader shader; + + // get the ordinal string + GetS0( shader.ordinal, size); + + // we could crash later if this is an empty string ... + if (!shader.ordinal.length()) + { + DefaultLogger::get()->error("LWO2: Ill-formed SURF.BLOK ordinal string"); + shader.ordinal = "\x00"; + } + + // read the header + while (true) + { + if (mFileBuffer + 6 >= end)break; + LE_NCONST IFF::SubChunkHeader* const head = IFF::LoadSubChunk(mFileBuffer); + + if (mFileBuffer + head->length > end) + throw new ImportErrorException("LWO2: Invalid shader header chunk length"); + + LE_NCONST uint8_t* const next = mFileBuffer+head->length; + switch (head->type) + { + case AI_LWO_ENAB: + shader.enabled = GetU2() ? true : false; + } + mFileBuffer = next; + } + + // process other subchunks ... + while (true) + { + if (mFileBuffer + 6 >= end)break; + LE_NCONST IFF::SubChunkHeader* const head = IFF::LoadSubChunk(mFileBuffer); + + if (mFileBuffer + head->length > end) + throw new ImportErrorException("LWO2: Invalid shader data chunk length"); + + LE_NCONST uint8_t* const next = mFileBuffer+head->length; + switch (head->type) + { + case AI_LWO_FUNC: + GetS0( shader.functionName, head->length ); + } + mFileBuffer = next; + } + + // now attach the shader to the parent surface - sort by ordinal string + for (ShaderList::iterator it = surf.mShaders.begin(); + it != surf.mShaders.end(); ++it) + { + if (::strcmp(shader.ordinal.c_str(),(*it).ordinal.c_str()) < 0) + { + surf.mShaders.insert(it,shader); + return; + } + } + surf.mShaders.push_back(shader); } // ------------------------------------------------------------------------------------------------ @@ -169,88 +604,131 @@ void LWOImporter::LoadLWO2Surface(unsigned int size) mSurfaces->push_back( LWO::Surface () ); LWO::Surface& surf = mSurfaces->back(); - ParseString(surf.mName,size); - mFileBuffer+=surf.mName.length()+1; - // skip one byte if the length of the surface name is odd - if (!(surf.mName.length() & 1))++mFileBuffer; - mFileBuffer += 2; + GetS0(surf.mName,size); + + // check whether this surface was derived from any other surface + std::string derived; + GetS0(derived,(unsigned int)(end - mFileBuffer)); + if (derived.length()) + { + + // yes, find this surface + for (SurfaceList::iterator it = mSurfaces->begin(), end = mSurfaces->end()-1; + it != end; ++it) + { + if ((*it).mName == derived) + { + // we have it ... + surf = *it; + derived.clear(); + } + } + if (!derived.size()) + DefaultLogger::get()->warn("LWO2: Unable to find source surface: " + derived); + } + while (true) { if (mFileBuffer + 6 >= end)break; + LE_NCONST IFF::SubChunkHeader* const head = IFF::LoadSubChunk(mFileBuffer); - // no proper IFF header here - the chunk length is specified as int16 - uint32_t head_type = *((LE_NCONST uint32_t*)mFileBuffer);mFileBuffer+=4; - uint16_t head_length = *((LE_NCONST uint16_t*)mFileBuffer);mFileBuffer+=2; - AI_LSWAP4(head_type); - AI_LSWAP2(head_length); - if (mFileBuffer + head_length > end) - { - throw new ImportErrorException("LWO2: Invalid file, the size attribute of " - "a surface sub chunk points behind the end of the file"); - } - LE_NCONST uint8_t* const next = mFileBuffer+head_length; - switch (head_type) + if (mFileBuffer + head->length > end) + throw new ImportErrorException("LWO2: Invalid surface chunk length"); + + LE_NCONST uint8_t* const next = mFileBuffer+head->length; + switch (head->type) { // diffuse color case AI_LWO_COLR: { - AI_LWO_VALIDATE_CHUNK_LENGTH(head_length,COLR,12); - surf.mColor.r = ((float*)mFileBuffer)[0]; - surf.mColor.g = ((float*)mFileBuffer)[1]; - surf.mColor.b = ((float*)mFileBuffer)[2]; - AI_LSWAP4(surf.mColor.r); - AI_LSWAP4(surf.mColor.g); - AI_LSWAP4(surf.mColor.b); + AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,COLR,12); + surf.mColor.r = GetF4(); + surf.mColor.g = GetF4(); + surf.mColor.b = GetF4(); break; } // diffuse strength ... hopefully case AI_LWO_DIFF: { - AI_LWO_VALIDATE_CHUNK_LENGTH(head_length,DIFF,4); - surf.mDiffuseValue = *((float*)mFileBuffer); - AI_LSWAP4(surf.mDiffuseValue); + AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,DIFF,4); + surf.mDiffuseValue = GetF4(); break; } // specular strength ... hopefully case AI_LWO_SPEC: { - AI_LWO_VALIDATE_CHUNK_LENGTH(head_length,SPEC,4); - surf.mSpecularValue = *((float*)mFileBuffer); - AI_LSWAP4(surf.mSpecularValue); + AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,SPEC,4); + surf.mSpecularValue = GetF4(); break; } // transparency case AI_LWO_TRAN: { - AI_LWO_VALIDATE_CHUNK_LENGTH(head_length,TRAN,4); - surf.mTransparency = *((float*)mFileBuffer); - AI_LSWAP4(surf.mTransparency); + AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,TRAN,4); + surf.mTransparency = GetF4(); break; } // glossiness case AI_LWO_GLOS: { - AI_LWO_VALIDATE_CHUNK_LENGTH(head_length,GLOS,4); - surf.mGlossiness = *((float*)mFileBuffer); - AI_LSWAP4(surf.mGlossiness); + AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,GLOS,4); + surf.mGlossiness = GetF4(); + break; + } + // bump intensity + case AI_LWO_BUMP: + { + AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,BUMP,4); + surf.mBumpIntensity = GetF4(); + break; + } + // color highlights + case AI_LWO_CLRH: + { + AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,CLRH,4); + surf.mColorHighlights = GetF4(); + break; + } + // index of refraction + case AI_LWO_RIND: + { + AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,RIND,4); + surf.mIOR = GetF4(); + break; + } + // polygon sidedness + case AI_LWO_SIDE: + { + AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,SIDE,2); + surf.bDoubleSided = (3 == GetU2()); + break; + } + // maximum smoothing angle + case AI_LWO_SMAN: + { + AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,SMAN,4); + surf.mMaximumSmoothAngle = GetF4(); break; } // surface bock entry case AI_LWO_BLOK: { - AI_LWO_VALIDATE_CHUNK_LENGTH(head_length,BLOK,4); - uint32_t type = *((uint32_t*)mFileBuffer); - AI_LSWAP4(type); + AI_LWO_VALIDATE_CHUNK_LENGTH(head->length,BLOK,4); + LE_NCONST IFF::SubChunkHeader* head2 = IFF::LoadSubChunk(mFileBuffer); - switch (type) + switch (head2->type) { - case AI_LWO_IMAP: case AI_LWO_PROC: - break; case AI_LWO_GRAD: - mFileBuffer+=4; - LoadLWO2TextureBlock(type,head_length-4); + case AI_LWO_IMAP: + LoadLWO2TextureBlock(head2, head->length); break; + case AI_LWO_SHDR: + LoadLWO2ShaderBlock(head2, head->length); + break; + + default: + DefaultLogger::get()->warn("LWO2: Found an unsupported surface BLOK"); }; break; diff --git a/code/MDRLoader.cpp b/code/MDRLoader.cpp index 7b3bd5dad..6838d377f 100644 --- a/code/MDRLoader.cpp +++ b/code/MDRLoader.cpp @@ -226,7 +226,7 @@ void MDRImporter::InternReadFile( file->Read( &mBuffer2[0], 1, fileSize); mBuffer = &mBuffer2[0]; - // validate the file header + // validate the file header and do BigEndian byte swapping for all sub headers this->pcHeader = (BE_NCONST MDR::Header*)this->mBuffer; this->ValidateHeader(); } \ No newline at end of file diff --git a/code/SGSpatialSort.cpp b/code/SGSpatialSort.cpp index 95bd52977..803b3b65e 100644 --- a/code/SGSpatialSort.cpp +++ b/code/SGSpatialSort.cpp @@ -83,9 +83,10 @@ void SGSpatialSort::Prepare() // ------------------------------------------------------------------------------------------------ // Returns an iterator for all positions close to the given position. void SGSpatialSort::FindPositions( const aiVector3D& pPosition, - uint32_t pSG, - float pRadius, - std::vector& poResults) const + uint32_t pSG, + float pRadius, + std::vector& poResults, + bool exactMatch /*= false*/) const { float dist = pPosition * mPlaneNormal; float minDist = dist - pRadius, maxDist = dist + pRadius; @@ -126,17 +127,44 @@ void SGSpatialSort::FindPositions( const aiVector3D& pPosition, // Add all positions inside the distance range within the given radius to the result aray float squareEpsilon = pRadius * pRadius; - std::vector::const_iterator it = mPositions.begin() + index; - while( it->mDistance < maxDist) + std::vector::const_iterator it = mPositions.begin() + index; + std::vector::const_iterator end = mPositions.end(); + + if (exactMatch) { - if((it->mPosition - pPosition).SquareLength() < squareEpsilon && - (it->mSmoothGroups & pSG || 0 == it->mSmoothGroups || 0 == pSG)) + while( it->mDistance < maxDist) { - poResults.push_back( it->mIndex); + if((it->mPosition - pPosition).SquareLength() < squareEpsilon && it->mSmoothGroups == pSG) + { + poResults.push_back( it->mIndex); + } + ++it; + if( end == it )break; + } + } + else + { + // if the given smoothing group is 0, we'll return all surrounding vertices + if (!pSG) + { + while( it->mDistance < maxDist) + { + if((it->mPosition - pPosition).SquareLength() < squareEpsilon) + poResults.push_back( it->mIndex); + ++it; + if( end == it)break; + } + } + else while( it->mDistance < maxDist) + { + if((it->mPosition - pPosition).SquareLength() < squareEpsilon && + (it->mSmoothGroups & pSG || !it->mSmoothGroups)) + { + poResults.push_back( it->mIndex); + } + ++it; + if( end == it)break; } - ++it; - if( it == mPositions.end()) - break; } } diff --git a/code/SGSpatialSort.h b/code/SGSpatialSort.h index 451516eb2..474811aa7 100644 --- a/code/SGSpatialSort.h +++ b/code/SGSpatialSort.h @@ -46,13 +46,15 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include "../include/aiTypes.h" -namespace Assimp -{ +namespace Assimp { -// ------------------------------------------------------------------------------------------------ +// ---------------------------------------------------------------------------------- /** Specialized version of SpatialSort to support smoothing groups - * This is used in the .3ds loader + * This is used in by the 3DS, ASE and LWO loaders. 3DS and ASE share their + * normal computation code in SmoothingGroups.inl, the LWO loader has its own + * implementation to handle all details of its file format correctly. */ +// ---------------------------------------------------------------------------------- class SGSpatialSort { public: @@ -60,7 +62,8 @@ public: SGSpatialSort(); // ------------------------------------------------------------------- - /** Construction from a given face array, handling smoothing groups properly + /** Construction from a given face array, handling smoothing groups + * properly */ SGSpatialSort(const std::vector& vPositions); @@ -74,7 +77,7 @@ public: unsigned int smoothingGroup); // ------------------------------------------------------------------- - /** Prepare the spatial sorter for use + /** Prepare the spatial sorter for use. This step runs in O(logn) */ void Prepare(); @@ -85,27 +88,35 @@ public: /** Returns an iterator for all positions close to the given position. * @param pPosition The position to look for vertices. * @param pSG Only included vertices with at least one shared smooth group - * @param pRadius Maximal distance from the position a vertex may have to be counted in. - * @param poResults The container to store the indices of the found positions. Will be emptied - * by the call so it may contain anything. + * @param pRadius Maximal distance from the position a vertex may have + * to be counted in. + * @param poResults The container to store the indices of the found + * positions. Will be emptied by the call so it may contain anything. + * @param exactMatch Specifies whether smoothing groups are bit masks + * (false) or integral values (true). In the latter case, a vertex + * cannot belong to more than one smoothing group. * @return An iterator to iterate over all vertices in the given area. */ + // ------------------------------------------------------------------- void FindPositions( const aiVector3D& pPosition, uint32_t pSG, - float pRadius, std::vector& poResults) const; + float pRadius, std::vector& poResults, + bool exactMatch = false) const; protected: /** Normal of the sorting plane, normalized. The center is always at (0, 0, 0) */ aiVector3D mPlaneNormal; // ------------------------------------------------------------------- - /** An entry in a spatially sorted position array. Consists of a vertex index, - * its position and its precalculated distance from the reference plane */ + /** An entry in a spatially sorted position array. Consists of a + * vertex index, its position and its precalculated distance from + * the reference plane */ + // ------------------------------------------------------------------- struct Entry { - unsigned int mIndex; ///< The vertex referred by this entry - aiVector3D mPosition; ///< Position + unsigned int mIndex; ///< The vertex referred by this entry + aiVector3D mPosition; ///< Position uint32_t mSmoothGroups; - float mDistance; ///< Distance of this vertex to the sorting plane + float mDistance; ///< Distance of this vertex to the sorting plane Entry() { /** intentionally not initialized.*/ } Entry( unsigned int pIndex, const aiVector3D& pPosition, float pDistance,uint32_t pSG) diff --git a/code/StandardShapes.cpp b/code/StandardShapes.cpp index ffa7abc90..ba57b82f3 100644 --- a/code/StandardShapes.cpp +++ b/code/StandardShapes.cpp @@ -48,7 +48,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. namespace Assimp { - // note - flip the face ordering + // note - flip the face order #define ADD_TRIANGLE(n0,n1,n2) \ positions.push_back(n2); \ positions.push_back(n1); \ @@ -291,12 +291,13 @@ void StandardShapes::MakeCone( // ------------------------------------------------------------------------------------------------ void StandardShapes::MakeCircle( - aiVector3D& center, - aiVector3D& normal, - float radius, - unsigned int tess, + const aiVector3D& center, + const aiVector3D& normal, + float radius, + unsigned int tess, std::vector& positions) { + //aiVector3D current = aiVector3D ( normal.x, } } // ! Assimp diff --git a/code/StandardShapes.h b/code/StandardShapes.h index fa13bc37b..f37b61579 100644 --- a/code/StandardShapes.h +++ b/code/StandardShapes.h @@ -146,7 +146,7 @@ public: * @param tess Number of triangles * @param positions Receives output triangles. */ - static void MakeCircle(aiVector3D& center, aiVector3D& normal, + static void MakeCircle(const aiVector3D& center, const aiVector3D& normal, float radius, unsigned int tess, std::vector& positions); diff --git a/include/aiMaterial.h b/include/aiMaterial.h index d26bf0bdf..2243ca4b3 100644 --- a/include/aiMaterial.h +++ b/include/aiMaterial.h @@ -197,7 +197,11 @@ enum aiShadingMode /** No shading at all */ - aiShadingMode_NoShading = 0x8 + aiShadingMode_NoShading = 0x9, + + /** Fresnel shading + */ + aiShadingMode_Fresnel = 0xa }; @@ -242,6 +246,7 @@ struct aiMaterialProperty } // need to end extern C block to allow template member functions #endif +// supported texture types #define AI_TEXTYPE_OPACITY 0x0 #define AI_TEXTYPE_SPECULAR 0x1 #define AI_TEXTYPE_AMBIENT 0x2 @@ -250,6 +255,7 @@ struct aiMaterialProperty #define AI_TEXTYPE_NORMALS 0x5 #define AI_TEXTYPE_SHININESS 0x6 #define AI_TEXTYPE_DIFFUSE 0x7 +#define AI_TEXTYPE_GLOSSINESS 0x8 // --------------------------------------------------------------------------- /** Data structure for a material @@ -339,7 +345,7 @@ extern "C" { // --------------------------------------------------------------------------- /** @def AI_BUILD_KEY - * Builds a material texture key with a dynamic index. + * Build a material texture key from an index that is not a compile-time constant. * Applications could do this (C-example): * @code * int i; @@ -352,10 +358,10 @@ extern "C" { * @endcode * However, this is wrong because AI_MATKEY_TEXTURE_DIFFUSE() builds the key * string at compile time.
- * Therefore, the dynamic indexing results in a + * Therefore, the indexing results in a * material key like this : "$tex.file.diffuse[i]" - and it is not very * propable that there is a key with this name ... (except the programmer - * of an ASSIMP loader has made the same mistake :-) ).
+ * of an ASSIMP loader has made the same fault :-) ).
* This is the right way: * @code * int i; @@ -369,8 +375,8 @@ extern "C" { * } * @endcode * @param base Base material key. This is the same key you'd have used - * normally with an underscore as suffix (e.g. AI_MATKEY_TEXTURE_DIFFUSE_) - * @param index Index to be used. Here you may pass a variable! + * normally with an extra underscore as suffix (e.g. AI_MATKEY_TEXTURE_DIFFUSE_) + * @param index Index to be used. * @param out Array of chars to receive the output value. It must be * sufficiently large. This will be checked via a static assertion for * C++0x. For MSVC8 and later versions the security enhanced version of @@ -469,6 +475,16 @@ extern "C" { */ #define AI_MATKEY_SHININESS_STRENGTH "$mat.shinpercent" +/** @def AI_MATKEY_REFRACTI + * Index of refraction of the material. This is used by some shading models, + * e.g. Cook-Torrance. The value is the ratio of the speed of light in a + * vacuum to the speed of light in the material (always >= 1.0 in the real world). + *
+ * Type: float
+ * Default value: 1.0f
+*/ +#define AI_MATKEY_REFRACTI "$mat.refracti" + // --------------------------------------------------------------------------- /** @def AI_MATKEY_COLOR_DIFFUSE * Defines the diffuse base color of the material @@ -586,8 +602,12 @@ extern "C" { #define AI_MATKEY_TEXTURE_HEIGHT_ "$tex.file.height" /** @def AI_MATKEY_TEXTURE_SHININESS - * Defines a specific shininess texture channel of the material - *
+ * Defines a specific shininess texture channel of the material. + * The shininess corresponds to the specular exponent used in the + * phong lighting equation. However, it is undefined how the exponent + * is encoded in the texture. A possible way would be the following: + * pixel value c € (0,1), n = 2^(10c+2). + *
* Type: string (aiString)
* Default value: none
* @note The key string is built at compile time, therefore it is not @@ -598,6 +618,7 @@ extern "C" { #define AI_MATKEY_TEXTURE_SHININESS(N) "$tex.file.shininess["#N"]" #define AI_MATKEY_TEXTURE_SHININESS_ "$tex.file.shininess" + /** @def AI_MATKEY_TEXTURE_OPACITY * Defines a specific opacity texture channel of the material *
@@ -626,6 +647,7 @@ extern "C" { * use the macro suffixed with '_' to build the key dynamically. The * AI_BUILD_KEY()-macro can be used to do this. */ +// --------------------------------------------------------------------------- #define AI_MATKEY_TEXOP_DIFFUSE(N) "$tex.op.diffuse["#N"]" /** @see AI_MATKEY_TEXOP_DIFFUSE */ #define AI_MATKEY_TEXOP_AMBIENT(N) "$tex.op.ambient["#N"]" @@ -663,6 +685,7 @@ extern "C" { * use the macro suffixed with '_' to build the key dynamically. The * AI_BUILD_KEY()-macro can be used to do this. */ +// --------------------------------------------------------------------------- #define AI_MATKEY_UVWSRC_DIFFUSE(N) "$tex.uvw.diffuse["#N"]" /** @see AI_MATKEY_UVWSRC_DIFFUSE */ #define AI_MATKEY_UVWSRC_AMBIENT(N) "$tex.uvw.ambient["#N"]" @@ -700,6 +723,7 @@ extern "C" { * use the macro suffixed with '_' to build the key dynamically. The * AI_BUILD_KEY()-macro can be used to do this. */ +// --------------------------------------------------------------------------- #define AI_MATKEY_TEXBLEND_DIFFUSE(N) "$tex.blend.diffuse["#N"]" /** @see AI_MATKEY_TEXBLEND_DIFFUSE */ #define AI_MATKEY_TEXBLEND_AMBIENT(N) "$tex.blend.ambient["#N"]" @@ -738,6 +762,7 @@ extern "C" { * use the macro suffixed with '_' to build the key dynamically. The * AI_BUILD_KEY()-macro can be used to do this. */ +// --------------------------------------------------------------------------- #define AI_MATKEY_MAPPINGMODE_U_DIFFUSE(N) "$tex.mapmodeu.diffuse["#N"]" /** @see AI_MATKEY_MAPPINGMODE_U_DIFFUSE */ #define AI_MATKEY_MAPPINGMODE_U_AMBIENT(N) "$tex.mapmodeu.ambient["#N"]" @@ -776,6 +801,7 @@ extern "C" { * use the macro suffixed with '_' to build the key dynamically. The * AI_BUILD_KEY()-macro can be used to do this. */ +// --------------------------------------------------------------------------- #define AI_MATKEY_MAPPINGMODE_V_DIFFUSE(N) "$tex.mapmodev.diffuse["#N"]" /** @see AI_MATKEY_MAPPINGMODE_V_DIFFUSE */ #define AI_MATKEY_MAPPINGMODE_V_AMBIENT(N) "$tex.mapmodev.ambient["#N"]" @@ -814,6 +840,7 @@ extern "C" { * use the macro suffixed with '_' to build the key dynamically. The * AI_BUILD_KEY()-macro can be used to do this. */ +// --------------------------------------------------------------------------- #define AI_MATKEY_MAPPINGMODE_W_DIFFUSE(N) "$tex.mapmodew.diffuse["#N"]" /** @see AI_MATKEY_MAPPINGMODE_W_DIFFUSE */ #define AI_MATKEY_MAPPINGMODE_W_AMBIENT(N) "$tex.mapmodew.ambient["#N"]" @@ -841,7 +868,6 @@ extern "C" { #define AI_MATKEY_ORENNAYAR_ROUGHNESS "$shading.orennayar.roughness" #define AI_MATKEY_MINNAERT_DARKNESS "$shading.minnaert.darkness" -#define AI_MATKEY_COOK_TORRANCE_REFRACTI "$shading.cookt.refracti" #define AI_MATKEY_COOK_TORRANCE_PARAM "$shading.cookt.param" /** @def AI_MATKEY_GLOBAL_BACKGROUND_IMAGE diff --git a/include/aiTypes.h b/include/aiTypes.h index 1ad52d646..ea251b5a6 100644 --- a/include/aiTypes.h +++ b/include/aiTypes.h @@ -107,6 +107,16 @@ struct aiColor3D bool operator != (const aiColor3D& other) const {return r != other.r || g != other.g || b != other.b;} + aiColor3D operator+(const aiColor3D& c) const + {return aiColor3D(r+c.r,g+c.g,b+c.b);} + aiColor3D operator-(const aiColor3D& c) const + {return aiColor3D(r+c.r,g+c.g,b+c.b);} + aiColor3D operator*(const aiColor3D& c) const + {return aiColor3D(r*c.r,g*c.g,b*c.b);} + + aiColor3D operator*(float f) + {return aiColor3D(r*f,g*f,b*f);} + #endif // !__cplusplus //! Red, green and blue color values diff --git a/port/jAssimp/README b/port/jAssimp/README new file mode 100644 index 000000000..e69de29bb diff --git a/port/jAssimp/jni_bridge/JNIMesh.cpp b/port/jAssimp/jni_bridge/JNIMesh.cpp index 5608f5f8c..08f359262 100644 --- a/port/jAssimp/jni_bridge/JNIMesh.cpp +++ b/port/jAssimp/jni_bridge/JNIMesh.cpp @@ -211,7 +211,7 @@ void JNIEnvironment::_assimp::_Mesh::Fill(jobject obj,const aiMesh* pcSrc) } // copy bones - if (0 < pcSrc->mNumBones) + if (pcSrc->mNumBones) { // allocate the array jobjectArray jarr = pc->NewObjectArray(pcSrc->mNumBones, diff --git a/port/jAssimp/src/assimp/BoneAnim.java b/port/jAssimp/src/assimp/BoneAnim.java index 54a3ea460..5316c77a0 100644 --- a/port/jAssimp/src/assimp/BoneAnim.java +++ b/port/jAssimp/src/assimp/BoneAnim.java @@ -71,17 +71,17 @@ public class BoneAnim { /** * Rotation keyframes */ - private KeyFrame[] mQuatKeys; + private KeyFrame[] mQuatKeys = null; /** - * Position keyframes. Component ordering is x,y,z + * Position keyframes. Component order is x,y,z */ - private KeyFrame[] mPosKeys; + private KeyFrame[] mPosKeys = null; /** - * scaling keyframes. Component ordering is x,y,z + * scaling keyframes. Component order is x,y,z */ - private KeyFrame[] mScalingKeys; + private KeyFrame[] mScalingKeys = null; /** diff --git a/port/jAssimp/src/assimp/Importer.java b/port/jAssimp/src/assimp/Importer.java index 06a115330..50bdaec49 100644 --- a/port/jAssimp/src/assimp/Importer.java +++ b/port/jAssimp/src/assimp/Importer.java @@ -196,8 +196,8 @@ public class Importer { * List of config properties for all supported types: int, float and string */ private PropertyList properties = new PropertyList(); - private PropertyList propertiesFloat = new PropertyList(); - private PropertyList propertiesString = new PropertyList(); + private PropertyList propertiesFloat = new PropertyList(); + private PropertyList propertiesString = new PropertyList(); /** @@ -221,7 +221,7 @@ public class Importer { * @param iVersion Version of the JNI interface to be used. * @throws NativeException Thrown if the jassimp library could not be loaded * or if the entry point to the module wasn't found. if this exception - * is not thrown, you can assume that jAssimp is fully available. + * is not thrown you can assume that jAssimp is fully available. */ public Importer(int iVersion) throws NativeException { @@ -390,12 +390,30 @@ public class Importer { throw new NativeException("Failed to load the mesh"); } if (null == this.scene) { - throw new NativeException("Failed to copy the data into the Java VM"); + throw new NativeException("Failed to copy the data to Java"); } return this.scene; } + /** + * Get the current scene or null if none is loaded + * @return Hello Amanda, I want to play a game ... + */ + public final Scene getScene() { + return scene; + } + + + /** + * Get the source path of the current scene or null if none is loaded + * @return Game Over. + */ + public final String getScenePath() { + return path; + } + + /** * Implementation of java.lang.Object.equals() * @@ -555,6 +573,10 @@ public class Importer { } + // ********************************************************************************* + // JNI INTERNALS + // ********************************************************************************* + /** * JNI bridge call. For internal use only * The method initializes the ASSIMP-JNI bridge for use. No native diff --git a/port/jAssimp/src/assimp/Material.java b/port/jAssimp/src/assimp/Material.java index 4e15fdf47..69d3aed12 100644 --- a/port/jAssimp/src/assimp/Material.java +++ b/port/jAssimp/src/assimp/Material.java @@ -43,7 +43,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. package assimp; - /** * Class to wrap materials. Materials are represented in ASSIMP as a list of * key/value pairs, the key being a String and the value being @@ -80,7 +79,8 @@ public class Material { /** * Constructs a new exception - * @param message Error message + * + * @param message Error message * @param property_key Name of the property that wasn't found */ public PropertyNotFoundException(String message, String property_key) { @@ -92,27 +92,29 @@ public class Material { /** * Get a property with a specific name as generic Object + * * @param key MATKEY_XXX key constant - * @return null if the property wasn't there or hasn't - * the desired output type. The returned Object can be - * casted to the expected data type for the property. Primitive - * types are represented by their boxed variants. + * @return null if the property wasn't there or hasn't + * the desired output type. The returned Object can be + * casted to the expected data type for the property. Primitive + * types are represented by their boxed variants. */ public Object getProperty(String key) throws PropertyNotFoundException { - for (Property prop : properties) { - if (prop.key.equals(key)){ + for (Property prop : properties) { + if (prop.key.equals(key)) { return prop.value; } } - throw new PropertyNotFoundException("Unable to find material property: ",key); + throw new PropertyNotFoundException("Unable to find material property: ", key); } - /** + /** * Get a material property as float array + * * @param key MATKEY_XXX key constant - * @throws PropertyNotFoundException - if the property can't be found - * or if it has the wrong data type. + * @throws PropertyNotFoundException - if the property can't be found + * or if it has the wrong data type. */ public float[] getPropertyAsFloatArray(String key) throws PropertyNotFoundException { @@ -121,18 +123,19 @@ public class Material { return (float[]) obj; } String msg = "The data type requested (float[]) doesn't match the " + - "real data type of the material property"; + "real data type of the material property"; DefaultLogger.get().error(msg); - throw new PropertyNotFoundException(msg,key); + throw new PropertyNotFoundException(msg, key); } - /** + /** * Get a floating-point material property + * * @param key MATKEY_XXX key constant * @return The value of the property. - * @throws PropertyNotFoundException - if the property can't be found - * or if it has the wrong data type. + * @throws PropertyNotFoundException - if the property can't be found + * or if it has the wrong data type. */ public float getPropertyAsFloat(String key) throws PropertyNotFoundException { @@ -141,18 +144,19 @@ public class Material { return (Float) obj; } String msg = "The data type requested (Float) doesn't match the " + - "real data type of the material property"; + "real data type of the material property"; DefaultLogger.get().error(msg); - throw new PropertyNotFoundException(msg,key); + throw new PropertyNotFoundException(msg, key); } /** * Get an integer material property + * * @param key MATKEY_XXX key constant * @return The value of the property. - * @throws PropertyNotFoundException - if the property can't be found - * or if it has the wrong data type. + * @throws PropertyNotFoundException - if the property can't be found + * or if it has the wrong data type. */ public int getPropertyAsInt(String key) throws PropertyNotFoundException { @@ -161,18 +165,19 @@ public class Material { return (Integer) obj; } String msg = "The data type requested (Integer) doesn't match the " + - "real data type of the material property"; + "real data type of the material property"; DefaultLogger.get().error(msg); - throw new PropertyNotFoundException(msg,key); + throw new PropertyNotFoundException(msg, key); } /** * Get a material property string + * * @param key MATKEY_XXX key constant * @return The value of the property. - * @throws PropertyNotFoundException - if the property can't be found - * or if it has the wrong data type. + * @throws PropertyNotFoundException - if the property can't be found + * or if it has the wrong data type. */ public String getPropertyAsString(String key) throws PropertyNotFoundException { @@ -181,9 +186,9 @@ public class Material { return (String) obj; } String msg = "The data type requested (java.lang.String) doesn't match the " + - "real data type of the material property"; + "real data type of the material property"; DefaultLogger.get().error(msg); - throw new PropertyNotFoundException(msg,key); + throw new PropertyNotFoundException(msg, key); } @@ -228,7 +233,9 @@ public class Material { *
* Type: int (TextureOp)
* Default value: 0
- * Requires: MATKEY_TEXTURE_DIFFUSE(0)
+ * Requires: MATKEY_TEXTURE_DIFFUSE(N)
+ * + * @param N Index of the texture */ public static String MATKEY_TEXOP_DIFFUSE(int N) { return "$tex.op.diffuse[" + N + "]"; @@ -284,5 +291,320 @@ public class Material { } + /** + * Specifies the blend factor to be multiplied with the value of + * the n'th texture layer before it is combined with the previous + * layer using a specific blend operation. + *

+ *
+ * Type: float
+ * Default value: 1.0f
+ * Requires: MATKEY_TEXTURE_DIFFUSE(N)
+ * + * @param N Index of the texture + */ + public static String MATKEY_TEXBLEND_DIFFUSE(int N) { + return "$tex.blend.diffuse[" + N + "]"; + } + /** + * @see MATKEY_TEXBLEND_DIFFUSE + */ + public static String MATKEY_TEXBLEND_SPECULAR(int N) { + return "$tex.blend.specular[" + N + "]"; + } + + /** + * @see MATKEY_TEXBLEND_DIFFUSE + */ + public static String MATKEY_TEXBLEND_AMBIENT(int N) { + return "$tex.blend.ambient[" + N + "]"; + } + + /** + * @see MATKEY_TEXBLEND_DIFFUSE + */ + public static String MATKEY_TEXBLEND_EMISSIVE(int N) { + return "$tex.blend.emissive[" + N + "]"; + } + + /** + * @see MATKEY_TEXBLEND_DIFFUSE + */ + public static String MATKEY_TEXBLEND_SHININESS(int N) { + return "$tex.blend.shininess[" + N + "]"; + } + + /** + * @see MATKEY_TEXBLEND_DIFFUSE + */ + public static String MATKEY_TEXBLEND_OPACITY(int N) { + return "$tex.blend.opacity[" + N + "]"; + } + + /** + * @see MATKEY_TEXBLEND_DIFFUSE + */ + public static String MATKEY_TEXBLEND_HEIGHT(int N) { + return "$tex.blend.height[" + N + "]"; + } + + /** + * @see MATKEY_TEXBLEND_DIFFUSE + */ + public static String MATKEY_TEXBLEND_NORMALS(int N) { + return "$tex.blend.normals[" + N + "]"; + } + + + /** + * Specifies the index of the UV channel to be used for a texture + *
+ * Type:int
+ * Default value:0
+ * Requires: MATKEY_TEXTURE_DIFFUSE(N)
+ * + * @param N Index of the texture + */ + public static String MATKEY_UVWSRC_DIFFUSE(int N) { + return "$tex.uvw.diffuse[" + N + "]"; + } + + /** + * @see MATKEY_UVWSRC_DIFFUSE + */ + public static String MATKEY_UVWSRC_SPECULAR(int N) { + return "$tex.uvw.specular[" + N + "]"; + } + + /** + * @see MATKEY_UVWSRC_DIFFUSE + */ + public static String MATKEY_UVWSRC_AMBIENT(int N) { + return "$tex.uvw.ambient[" + N + "]"; + } + + /** + * @see MATKEY_UVWSRC_DIFFUSE + */ + public static String MATKEY_UVWSRC_EMISSIVE(int N) { + return "$tex.uvw.emissive[" + N + "]"; + } + + /** + * @see MATKEY_UVWSRC_DIFFUSE + */ + public static String MATKEY_UVWSRC_SHININESS(int N) { + return "$tex.uvw.shininess[" + N + "]"; + } + + /** + * @see MATKEY_UVWSRC_DIFFUSE + */ + public static String MATKEY_UVWSRC_OPACITY(int N) { + return "$tex.uvw.opacity[" + N + "]"; + } + + /** + * @see MATKEY_UVWSRC_DIFFUSE + */ + public static String MATKEY_UVWSRC_HEIGHT(int N) { + return "$tex.uvw.height[" + N + "]"; + } + + /** + * @see MATKEY_UVWSRC_DIFFUSE + */ + public static String MATKEY_UVWSRC_NORMALS(int N) { + return "$tex.uvw.normals[" + N + "]"; + } + + + /** + * Specifies the texture mapping mode in the v (y) direction. + *
+ * Type:int
+ * Default value:TextureMapMode.Wrap
+ * Requires: MATKEY_TEXTURE_DIFFUSE(N)
+ * + * @param N Index of the texture + */ + public static String MATKEY_MAPPINGMODE_U_DIFFUSE(int N) { + return "$tex.mapmodeu.diffuse[" + N + "]"; + } + + /** + * @see MATKEY_MAPPINGMODE_U_DIFFUSE + */ + public static String MATKEY_MAPPINGMODE_U_SPECULAR(int N) { + return "$tex.mapmodeu.specular[" + N + "]"; + } + + /** + * @see MATKEY_MAPPINGMODE_U_DIFFUSE + */ + public static String MATKEY_MAPPINGMODE_U_AMBIENT(int N) { + return "$tex.mapmodeu.ambient[" + N + "]"; + } + + /** + * @see MATKEY_MAPPINGMODE_U_DIFFUSE + */ + public static String MATKEY_MAPPINGMODE_U_EMISSIVE(int N) { + return "$tex.mapmodeu.emissive[" + N + "]"; + } + + /** + * @see MATKEY_MAPPINGMODE_U_DIFFUSE + */ + public static String MATKEY_MAPPINGMODE_U_SHININESS(int N) { + return "$tex.mapmodeu.shininess[" + N + "]"; + } + + /** + * @see MATKEY_MAPPINGMODE_U_DIFFUSE + */ + public static String MATKEY_MAPPINGMODE_U_OPACITY(int N) { + return "$tex.mapmodeu.opacity[" + N + "]"; + } + + /** + * @see MATKEY_MAPPINGMODE_U_DIFFUSE + */ + public static String MATKEY_MAPPINGMODE_U_HEIGHT(int N) { + return "$tex.mapmodeu.height[" + N + "]"; + } + + /** + * @see MATKEY_MAPPINGMODE_U_DIFFUSE + */ + public static String MATKEY_MAPPINGMODE_U_NORMALS(int N) { + return "$tex.mapmodeu.normals[" + N + "]"; + } + + + /** + * Specifies the texture mapping mode in the v (y) direction. + *
+ * Type:int
+ * Default value:TextureMapMode.Wrap
+ * Requires: MATKEY_TEXTURE_DIFFUSE(N)
+ * + * @param N Index of the texture + */ + public static String MATKEY_MAPPINGMODE_V_DIFFUSE(int N) { + return "$tex.mapmodev.diffuse[" + N + "]"; + } + + /** + * @see MATKEY_MAPPINGMODE_V_DIFFUSE + */ + public static String MATKEY_MAPPINGMODE_V_SPECULAR(int N) { + return "$tex.mapmodev.specular[" + N + "]"; + } + + /** + * @see MATKEY_MAPPINGMODE_V_DIFFUSE + */ + public static String MATKEY_MAPPINGMODE_V_AMBIENT(int N) { + return "$tex.mapmodev.ambient[" + N + "]"; + } + + /** + * @see MATKEY_MAPPINGMODE_V_DIFFUSE + */ + public static String MATKEY_MAPPINGMODE_V_EMISSIVE(int N) { + return "$tex.mapmodev.emissive[" + N + "]"; + } + + /** + * @see MATKEY_MAPPINGMODE_V_DIFFUSE + */ + public static String MATKEY_MAPPINGMODE_V_SHININESS(int N) { + return "$tex.mapmodev.shininess[" + N + "]"; + } + + /** + * @see MATKEY_MAPPINGMODE_V_DIFFUSE + */ + public static String MATKEY_MAPPINGMODE_V_OPACITY(int N) { + return "$tex.mapmodev.opacity[" + N + "]"; + } + + /** + * @see MATKEY_MAPPINGMODE_V_DIFFUSE + */ + public static String MATKEY_MAPPINGMODE_V_HEIGHT(int N) { + return "$tex.mapmodev.height[" + N + "]"; + } + + /** + * @see MATKEY_MAPPINGMODE_V_DIFFUSE + */ + public static String MATKEY_MAPPINGMODE_V_NORMALS(int N) { + return "$tex.mapmodev.normals[" + N + "]"; + } + + + /** + * Specifies the texture mapping mode in the w (z) direction. + *
+ * Type:int
+ * Default value:TextureMapMode.Wrap
+ * Requires: MATKEY_TEXTURE_DIFFUSE(N)
+ * + * @param N Index of the texture + */ + public static String MATKEY_MAPPINGMODE_W_DIFFUSE(int N) { + return "$tex.mapmodew.diffuse[" + N + "]"; + } + + /** + * @see MATKEY_MAPPINGMODE_V_DIFFUSE + */ + public static String MATKEY_MAPPINGMODE_W_SPECULAR(int N) { + return "$tex.mapmodew.specular[" + N + "]"; + } + + /** + * @see MATKEY_MAPPINGMODE_V_DIFFUSE + */ + public static String MATKEY_MAPPINGMODE_W_AMBIENT(int N) { + return "$tex.mapmodew.ambient[" + N + "]"; + } + + /** + * @see MATKEY_MAPPINGMODE_V_DIFFUSE + */ + public static String MATKEY_MAPPINGMODE_W_EMISSIVE(int N) { + return "$tex.mapmodew.emissive[" + N + "]"; + } + + /** + * @see MATKEY_MAPPINGMODE_V_DIFFUSE + */ + public static String MATKEY_MAPPINGMODE_W_SHININESS(int N) { + return "$tex.mapmodew.shininess[" + N + "]"; + } + + /** + * @see MATKEY_MAPPINGMODE_V_DIFFUSE + */ + public static String MATKEY_MAPPINGMODE_W_OPACITY(int N) { + return "$tex.mapmodew.opacity[" + N + "]"; + } + + /** + * @see MATKEY_MAPPINGMODE_V_DIFFUSE + */ + public static String MATKEY_MAPPINGMODE_W_HEIGHT(int N) { + return "$tex.mapmodew.height[" + N + "]"; + } + + /** + * @see MATKEY_MAPPINGMODE_V_DIFFUSE + */ + public static String MATKEY_MAPPINGMODE_W_NORMALS(int N) { + return "$tex.mapmodew.normals[" + N + "]"; + } } diff --git a/port/jAssimp/src/assimp/PostProcessStep.java b/port/jAssimp/src/assimp/PostProcessStep.java index 7a096de28..288030f56 100644 --- a/port/jAssimp/src/assimp/PostProcessStep.java +++ b/port/jAssimp/src/assimp/PostProcessStep.java @@ -45,7 +45,7 @@ package assimp; /** * Enumeration class that defines postprocess steps that can be executed on a model * after it has been loaded. All PPSteps are implemented in C++, so their performance - * is awesome. Most steps are O(n * log(n)). ;-) + * is awesome :-) (*duck*) * * @author Aramis (Alexander Gessler) * @version 1.0 @@ -186,54 +186,58 @@ public class PostProcessStep { new PostProcessStep("ValidateDataStructure"); - /** Reorders triangles for vertex cache locality and thus better performance. - * The step tries to improve the ACMR (average post-transform vertex cache - * miss ratio) for all meshes. The step runs in O(n) and is roughly - * basing on the algorithm described in this paper: - * http://www.cs.princeton.edu/gfx/pubs/Sander_2007_%3ETR/tipsy.pdf - */ - public static final PostProcessStep ImproveVertexLocality = + /** + * Reorders triangles for vertex cache locality and thus better performance. + * The step tries to improve the ACMR (average post-transform vertex cache + * miss ratio) for all meshes. The step runs in O(n) and is roughly + * basing on the algorithm described in this paper: + * http://www.cs.princeton.edu/gfx/pubs/Sander_2007_%3ETR/tipsy.pdf + */ + public static final PostProcessStep ImproveVertexLocality = new PostProcessStep("ImproveVertexLocality"); - /** Searches for redundant materials and removes them. - * - * This is especially useful in combination with the PretransformVertices - * and OptimizeGraph steps. Both steps join small meshes, but they - * can't do that if two meshes have different materials. - */ - public static final PostProcessStep RemoveRedundantMaterials = + /** + * Searches for redundant materials and removes them. + *

+ * This is especially useful in combination with the PretransformVertices + * and OptimizeGraph steps. Both steps join small meshes, but they + * can't do that if two meshes have different materials. + */ + public static final PostProcessStep RemoveRedundantMaterials = new PostProcessStep("RemoveRedundantMaterials"); - /** This step tries to determine which meshes have normal vectors - * that are facing inwards. The algorithm is simple but effective: - * the bounding box of all vertices + their normals is compared against - * the volume of the bounding box of all vertices without their normals. - * This works well for most objects, problems might occur with planar - * surfaces. However, the step tries to filter such cases. - * The step inverts all infacing normals. Generally it is recommended - * to enable this step, although the result is not always correct. - */ - public static final PostProcessStep FixInfacingNormals = + /** + * This step tries to determine which meshes have normal vectors + * that are facing inwards. The algorithm is simple but effective: + * the bounding box of all vertices + their normals is compared against + * the volume of the bounding box of all vertices without their normals. + * This works well for most objects, problems might occur with planar + * surfaces. However, the step tries to filter such cases. + * The step inverts all infacing normals. Generally it is recommended + * to enable this step, although the result is not always correct. + */ + public static final PostProcessStep FixInfacingNormals = new PostProcessStep("FixInfacingNormals"); - /** This step performs some optimizations on the node graph. - * - * It is incompatible to the PreTransformVertices-Step. Some configuration - * options exist, see aiConfig.h for more details. - * Generally, two actions are available:
- * 1. Remove animation nodes and data from the scene. This allows other - * steps for further optimizations.
- * 2. Combine very small meshes to larger ones. Only if the meshes - * are used by the same node or by nodes on the same hierarchy (with - * equal local transformations). Unlike PreTransformVertices, the - * OptimizeGraph-step doesn't transform vertices from one space - * another.
- * 3. Remove hierarchy levels
- * - * It is recommended to have this step run with the default configuration. - */ - public static final PostProcessStep OptimizeGraph = + /** + * This step performs some optimizations on the node graph. + *

+ * It is incompatible to the PreTransformVertices-Step. Some configuration + * options exist, see aiConfig.h for more details. + * Generally, two actions are available:
+ * 1. Remove animation nodes and data from the scene. This allows other + * steps for further optimizations.
+ * 2. Combine very small meshes to larger ones. Only if the meshes + * are used by the same node or by nodes on the same hierarchy (with + * equal local transformations). Unlike PreTransformVertices, the + * OptimizeGraph-step doesn't transform vertices from one space + * another.
+ * 3. Remove hierarchy levels
+ *

+ * It is recommended to have this step run with the default configuration. + */ + public static final PostProcessStep OptimizeGraph = new PostProcessStep("OptimizeGraph"); private final String myName; // for debug only diff --git a/port/jAssimp/src/assimp/TextureMapMode.java b/port/jAssimp/src/assimp/TextureMapMode.java index 91a5a1166..1b18d09e3 100644 --- a/port/jAssimp/src/assimp/TextureMapMode.java +++ b/port/jAssimp/src/assimp/TextureMapMode.java @@ -42,11 +42,25 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. package assimp; /** - * Created by IntelliJ IDEA. - * User: Alex - * Date: 08.06.2008 - * Time: 17:27:11 - * To change this template use File | Settings | File Templates. + * Defines how texture coordinates ! ElemOf [0 ... 1] are handled. + * + * This corresponds to the native aiTextureMapMode enum. + * + * @author Alexander Gessler (Aramis) */ public class TextureMapMode { + + /** A texture coordinate u|v is translated to u%1|v%1 + */ + public static final int Wrap = 0x0; + + /** Texture coordinates outside the area formed by 1|1 and 0|0 + * are clamped to the nearest valid value on an axis + */ + public static final int Clamp = 0x1; + + /** A texture coordinate u|v becomes u%1|v%1 if (u-(u%1))%2 is zero and + * 1-(u%1)|1-(v%1) otherwise + */ + public static final int Mirror = 0x2; } diff --git a/port/jAssimp/src/assimp/test/DumpToFile.java b/port/jAssimp/src/assimp/test/DumpToFile.java index e6f6f46a0..fd59644d0 100644 --- a/port/jAssimp/src/assimp/test/DumpToFile.java +++ b/port/jAssimp/src/assimp/test/DumpToFile.java @@ -45,8 +45,14 @@ package assimp.test; import assimp.*; +import javax.imageio.ImageWriter; +import javax.imageio.ImageIO; +import javax.imageio.stream.ImageOutputStream; import java.io.FileWriter; import java.io.IOException; +import java.io.File; +import java.awt.image.BufferedImage; +import java.util.Iterator; /** @@ -115,10 +121,34 @@ public class DumpToFile { * * @param texture Texture to be exported * @param path Output path - * @throws IOException yes ... sometimes ... :-) */ - public static void SaveTextureToTGA(Texture texture, String path) throws IOException { + public static void SaveTextureToTGA(Texture texture, String path) { + BufferedImage bImg = texture.convertToImage(); + Iterator writers = ImageIO.getImageWritersBySuffix("tga"); + if (!(writers.hasNext())) { + System.out.println("No writer for TGA file format available"); + return; + } + ImageWriter w = (ImageWriter) (writers.next()); + if (w == null) { + System.out.println("No writer for TGA file format available"); + return; + } + File fo = new File(path); + + try { + + ImageOutputStream ios = ImageIO.createImageOutputStream(fo); + w.setOutput(ios); + w.write(bImg); + + } + catch (IOException ex) { + System.out.println("Failed to write " + path); + return; + } + System.out.println(path + " has been written"); } @@ -390,7 +420,7 @@ public class DumpToFile { String path = arguments[1].substring(0, arguments[1].length() - 4) + "_tex" + i++ + ".tga"; stream.write("Emb. Texture\n" + - "\tExportPath: " + path + "\n\n"); + "\tExportPath: " + path + "\n\n"); SaveTextureToTGA(texture, path); } @@ -399,7 +429,6 @@ public class DumpToFile { /* Now print all materials */ - // close the stream again stream.close(); } diff --git a/test/3DSFiles/IMAGE1.bmp b/test/3DSFiles/IMAGE1.bmp index 5a88d56471b22cc217cc7f1758bb4104949adf87..01b5253ba179cfd7cd53f4f51f4b7f2013dce7ad 100644 GIT binary patch literal 24711 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

H1zMkih3w4g#Bv@D3aK>e2 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 z z&Q6~@udZKQqW5*X^MT91oK3uD7D_dM@o>X8e*MSJTJ?o6CViSC?T@)G3!Pi*U@jP+ zYTmTo|8uK1ikIQx#bEh$J&L1yj|Sfbhu$hCgykQHJssd+W@88bPixLkJ=Z+jC&ig> zebzj>u%X2`0b5UK_!fUvBgPxN)4I{x;rr$4G!%BS4cmQ*SHuW-p0~?QaOLLvTyvZ4 z&20MO&f>N3E5A>V-h4J4uUTDSAzL%md}_JGad+{>U;e&a?kT1Vhj)I(7H}=`%T9c^ z&DK@SsJ{45MPI{gf-=xkH!7rHaGM4bdz5AB&;sY?7jSl@6(_CxcA-@!@t@c zfA@=Wi1)ki+2Lw0YD_o{FMa&o*{IYx1KaP7x{Rwm{SIZ-gdpDd)!`$t=5|U^0oeL(A5`rc0O?-%*ngddrcK55Bh4wHG{TpK65wwMT?T1 z_Isw9nK#v5UfE6uYWrTfSMxVJi?4*^-71H5mteYb0NCn5IS*d+VY*0f)|>24oL;jx z7pn{Igli15rQ7TE{0B{uLD#Cf-%&BqR`gR*5X?E4TDYhI&jyq+xsrUend6};*cNlts zv(Gd&&4E2%UHsf;IZ1X%k0TB)JEgwjJdMGy;_}jZQhR_k@pbwV^)ih1y)at5OB`ao zKzhdX$Xp3OGP_)_;4lkRypvs-$}Z@SU}KzHG3iV;g*|}_Jmqlu-DZlEWAG(Cm-yQJ zJN2;Xz8_Z*uIGK#XPlusZXJ@p~A%%g1VRDO;Y6YSwe zwt=>y`M1t5eDQXi+ueF~_31tN`0KOBshMhD8)mV;;O>sB}P1E8II#WZeT77@N z`UP#8h1P;@+e!Xsm|fKR&s7(=ll@g6Q}=#8d}b@#|N3YD&^`SiKKW?mnCuu66I7>dV<4oayyq znR}hXh1OOKek=PT-`>dH9P}AxvTo!*&EgU(Ka5XuuNZu<^E=F8>fYlAO`Tf*a>DlV zaxtP=E!WC@U;TA`yxEh3a!9&qgVt<5dStJ;7WrdbeDNJzg=Wuu99De>H{VSwyZn8l zI9Z)#wR31L!p+y}JIuz2xp5lg8)lMj>qqHbAAb1NU_&=(vNn_A+3pBjajVaS;U8vC z;a>Qu+xec2VlW)3{bsftcTP@=XU)xi^ug0UyEi^Ber<1XB_5Zr=>O5%Pq&!f-*$UT zYh*GTrN@A;Q}3pWi*GyVs^-VnTif;Q^F-VZ+&=rSr%9{=r-IL_W6$(+hkdS`1+PF3 zhJOH$8)gp_htgr)3}alVu7&sX@~3~wc7$DbHsHPo^>@G}aR2dQ#Q+QaK6&6yagMn= zv=SydLv&AQf~cj!i+$cw_lYK%^Pm@Dt@C(23;|BDUCg!D8qg@Cy|^6ay-`l`Z28)0 z`!}|EKObNI(7C#wADHZp>CM9lg&*Si-KYk#9e0XdTMVZW`_091*Y`P7T%~^U!?im@ zU5K9Dme`<}Ml5FL!?n)Xbg>BCf3d>V&AY8h{EBLdBU{ZN+OEc)4Zz!^fz9?=Z}>VJ zgoCXfe4&3kpS{C+nt+zm~U|@E{?gS+vTS;JchbOdydZt zcU>%IqTPCN^G?3%;nTPy`%IS?5BFAl3BGuzb1T=LjEC@I80n*I`BL%1MDIFT%(0p6 zIOLIeZ6&>%Z8e#BbU}QV78#RU+*|fNUW?k+&f<@hM{A2p|2@8 zQ)|js>mjt3dhxFIyU%UkE}qOjg?o*JQPFMieddacbmq>Na}WL`+b;fE%BDDr=HK8~ zU5d9shwEbg1+Jyv?^(M29KJ;QYPSel}6emw2(E!?cWo}bGfUu|zMrQb4DjNs0%mlup|+-&`- zw-iIe=ohmgIFQrD1LpghD-EaL3Jcik%pbSMul%O|F#lbg_BfkjMhl!&Yz>dPQC;~U z8wf*Rxc74NjH_W~E4E(>ug-6c7oWZQ+ds!O409|_(tm#|KXdnk;=ZtZ_x5Vfe6_oc zQ-Fu4zw26Sz)z|%!>ewq4|fK(`b=^ET=@C*?g{-xwV;i1hS_ZY^*GUVUG(m=Vdhsq zQyr1^CHx9jaOAyP>zVeRegU0mTt=Udmtuy_V)g+ijbAnQ3qGm0&CC>wO;ke)FB`G}VN5`l1U2rxu&#|(jR}d_qbAB+ANL5a1lI@{oaUwpk$Z>gCSR_597bda!6s-`FzboulHW43DpT}Z%N*(Xwc3Mzt zcZGDHrtv^^-gqBaRv{c@TW z?P3r4ERKr)COOd6e8gmN)-xLq&i>Q#aXOuMp6<&nJ%!HwrU&7{duMhLTPP*^%wb^*S zQ`xv5=MVnP%w92d?~vbI?ViAwZ@*seSRAe0V&sqh_>X4?55iCLKY9pYw=?a}wfx<+ zaD}JZ8Rcl%fcfs!Y&O}hlxr5$tQWXQG#} z-2E`KNx!?Cj_!psE5}nm(5o<0y_veVj}=7oG00Vj|i_v*KoPQhPSr85-G(qtiLV$DGTy!${#U%lUmc;8-!Keu8uL z2$++*pC$_JfA)C5xw~i1rC4cS-zeta~Jrvs?mOJRb z(2GFtcfNO}scF918(;nJ7*TXNr zb53WggRPWjY_|V1*;{%Gbg=MNuXQKn;*-UhY71A&>CMJg`!Kf+S4NyX-Coeqa~JSC z%`iAFwwaDIEQVfbo#?u(R8us2)4fvzk?ZRbg1^mmuKBu~;hyvw=%t^_Z@>zzF&ocz zs}Y-*yU^Jm=A)OF3^8{;8J|tAA||7uipTpjcj@!<1sAtl>tfaM&Xh0xGy`7MdgDe< zRpT>TcHj?nrYD z`JI{0sr+uHJLg$Oj`DTABV6=czR;S6lbe>bzV1_EB80yVbdx_uD;v z@ZoRb^@U?~&gs@H_PJ}F{prr~dYJ9Pv*DWA4%}4d!I{!S^&p-9(^re3^WT*vvzQw^nA+r@JG*~y>$^1J$a ze>L=C`}1~p_J#fqRyFkQm8-l^9yom`+@dwX%c4)K7iOz_cBeHtEnhVI^JaGo77VXZ z%Utg{&27V9wl?}z%x-Y+#T!%IF<9PG@wpjtu%5N@Q~mn10%o&AW^B=EqUnMAtqvh> zbI#c;x<=Qs`+8vX#Nb=$8=*_3pX^pXV7{N*Y%Z()qNU5{&?KN6vemP)8H?4g)F_tV z7M*!HqxrdJk(kZBS6nh0PLCU?ABx>SSKabQTg~}tPcCIUE_Ajg>K|5rnF?2f`z+yU zy!6X-rD?ap8`J1`@~h$-y`I$*^LMlca3u6D(uZ?*1};@O-fH#c(`>Bo84nL%=rhdz zp?5KpJ%g+1TcYtbksoB6aPHmdvGi<4v*GNCcc=L?%!tWniXks|FSgcq#jLEpC)qPkcOEtjC&f)aRgHg8yVr zhI#QD*%5pM`)nrILNT5>gZgOn121PU)L-bz&|p06?}oWu?U{H+-lD$!sJwYPdn*qV z-?4p@{XLz)srKL6(=(6{o86&DZYDc9%*p88j^9eBEs+ijTJ8edz&^w{`frCh(5P3{7mDh=7 z>Fn%OkDBb?&1pZspRe1E3(^07Z}H&l`wPtoSUPIX#{K+j`_Wy}UTEap}FcvwAE|Brrmw#(gK>YTwXZ*)f|i~qgnxpc)Y z#q${Ey5=uoT{|!SCZE~6b+_O6y!t@CYA?Q^nK){Rcg;^7GzVF} za@?7n9{fIi|7wKU-Ldki8?T0cevB*Cew43WE(YRT#VDt5_pJGEJ?T^B40^wPsavtz z;vso0J^h<+#Qp5QXIuMg-Cb)$a}a-K`C+koxoI@f=U;Zu(mKq49rZJKRq9^& z`Okm!?a&W-r|*C6y>zj<>$uO(qCO9C++n_Dt9Lngr5Pi|j-F;-v>&(1d3UNK z(Hf`6ileEg^_D!ib=r&Lqrb&mEc`I_*5%^b`Qlfa3@5$oQSq-?L#Nd>ZuGU{zO~j@ z;GL(?~G*!Ze4tom=X7eY*zfa!zW{8!<#FxU+e5PJoHJ7>GN36HnTF_=w z+s9?bxuQ=B8|6nYrw->9~>BruHm3A)1TK}v0N_pZB*KSq& z$&U?jJWZ1i>i=#o*YeHwvwC&4vyINrL>#5fY{292M=`&?;qB^nKU}@pe5vCBZ*&)* zjjN#-Pe1rcHbl?R<$83c+gE*YC&eDeac$Wdx*N18X3A|Jyw_~P*3CXyvjuhQ&gVqu z<*3|)CjY~ae;+6FSMjpG37-q=%{Jr5>MbzieIr{j@F2TmVlw!!TKu5v*1P&$^d!XM z=6MV~YQ;f2;`VI19LPQAtMJX&`@MSO&0C%Cop7u-v#Dl0-c1kds2U1x2|Y&h^2`Di zXUjnj^TXG=n|JaFYY)R((l){aeX0#oZM!_-PCkCXZr=K|GuOOE>Ie&15D+|NG$$8xIrXX<6y%?>@x z25wdNKJ8ho*;@7M&1M8n)Yo;X`m>mvMjWm8q2IRW`u_U;AzsC$IC=H0vmX>6-6?;2 z_LHy5hu`a-!-T4j=6eoaZC-f&=8yB=FUECS=hq@p|`+JqnLw zH*TvZg$2lw^#7?t4mfA`{>K}4+plnn)>_{(UBszu9t;>>b3TmXYPE-%K2Hq^??CNi zPEOPJk5o^f^I}Hs&{x*qslEJPle_UyAD$hQZ`gDF&ChJc0iM_%W(Xg=@@eN1ZW1Qn z_m3Bgt(H^bLLY|r+>gV&kR3Ghc)qwwZ`0|Uzw5utLyHsGLAurteip}1{8PMn*twvk zt3Ur?T)>U;&9$)it#X(1Tlyf1ulx7q?uYr7Y&E?N8kmEYiaK!jn2+4dPHmUxnTc-J z_eNY9IOBT0YrFgN=-qFsd*LX&Rvy$ImnWKEy-}=0^9$!oPx)Lwe8S7 zXNIOaedy`@0<9#o8lKsCSgoL*>++VF?DNpOQOtC;98MfGXpkR=(RQyl`aPrJL>KnT zcgvNB*_5rdS*8ebz*K23K_!>@`g^yha+G`hOSuz2-w6y;B}h&Uw8xyIC*PLAAjdIcz!C zOuXK$deGqZqr10UoED=>$s3l#+7>Kum5uP)6ajO zz5l3qIL&XlY`lrLe)E@N?ap$%UUce|4mlIcqJ;=V{RAiaVVI0w(<)nI!o|s$3iTss1 z$+LWD_U)h;alJLC+w#s=e~rTpXYOu^S6WXo!i`t6i^ZS#P4I2?&h6?6i`fKx9vYnT zljZKM*(I-i_U({g=tG1fuZWk6!Oc}&&+koTGse>P!<*KRJ9bk1lHXOI87uCl+l{jX zJATTIQ%5M?Y^~MfCR-yj;>OFtcd~V_{^}2BAAk3cap8X7euiyUuioiAT+1%tLLbIq zK7F+ut@q!mXFz|;rJmSIIW3hEwc=5}# z(VqQ$`2vl>jn1n&^GVz=HKxb!d^KQ>NA1;7|0XwE6vKqu;LI+CX+8Mp_wn9e8ERB! zFX8S_hM|q+*Tk7L?DU7Jb;DNF2+RlHDF2*mt#QYPnW*I^@UCmw16Vw*KDD>= zG$*gOuj4z9&wlmYzn;DK>DSr3>|8$aZ>A5k7jZa0{IdAy({S!|-UquH_R$*i3wzaB zW_$1FKQj9|%(YnJ;3v*)=e%cfFRuB@1{|0t@~dytE&9_?8yK_{!e4KfliZFscy4yT z{*7kx#W^y+KyM?i3U1LxSnXOoyOrz#yi}e%RoukBt5MJ$(F3ZMq>qpfHKSxYyG^$V zUmH$_6Noc2)KZ6>Gfs0h34RTe(%Wo(tj$R8{^PYf!<`g|tIezS`Yl&ZF+Jyha`CQgtg@z@ya@JwqOumU$55F_? zf%JVaLOx9HB-dwqaIdVVI*<1?yARKf)(PJBT+cdlvvZeShtu&_>Tr7K54!KW-S$!`2dNUr-yTAL(5ZjMb=QE@G$;W?=SM=G?J8X_D zY*l>*e#*wrb%w=+Bi-Sv`SGEjg@4MfI1hSgaN5+TV6lg-2VHvDiWwza)oi9cOS~bo zRfc}d>^>gFOn!Z%oF5m94zszBX0y-{ILsFRB%a2891!+UPnwv}=UP|y+r6PNN>4^U zOs8bNcocSKc831P`SuTH?@Zxmsx9Ld)38?Cba!CQ_!{HI9dE{=e^kuM#y?xHpPrc6 z_HaHP#6dOa)#44hl3Q`9&Dq_{->F&Nc;mBb;c}P!i+#vG-%nfQcDTyT{(S9sY1C#P z)a3Vy)$khWEuQpu_z`A=n6dSfUwk#x!0%R9Uk_`XZ(YnmR9~fsr043*&;D}u#uwiX zT0naC%#l&L><}wT+4sp zGw4IdL4u`Ec8B1~bVl%%U=nn>&1Apcf5WuZ-}Qg-#anTp*22zd2n>2Gz1Mu7y;UFc zdY`e=_be9A=_NC#NDTjjjkE!ex<}PJ9)J9Y>~nm|?yH_poHQ8Id^MM`yUlM)FLNZ^ z(LJT}gtH5)oau}$cV_Q*o*&1f#w~pEQP}VE^~twyb7DW*BH?%DFFW@yR8JhV#)}PM zYqavrtjCR_AEgdU_Y~(}?HdoD9`HhOw0jCa6|3O3;h32F^e8*Mm`xSi;gBwLUU&0X z&vrI`{pbJEY|iRcanp|bJ@o(8rr!PXpW=-F?ChOir~gs@s24SRJwFaOJ&gTwlY4P- z^d*dBo98>XG`-n>bI|Aq{b+WtyYjTZTh3?3>ZsaH?>*FVIyY0<*9+w`GhqU31-%0G z2bwPY1nn{!sT0Nf>K1q$%XxDTyf#N^UZ3WIAMA?=DbH( z4!li2h@O(ka8G#EX#Q893LZS3#4R`_d`RBfx=!@_-FNqz#@?W(+M2*)yuTT0W~;2_ zQ+C_SoiHTvq*>YcENT|#TRXmQIb7WA-Q8k%eNpRauODV(u2sXv=b0)uJS;}vE(TOf zgd@staEkRz>V3NvwsIKWu+}?`cV^VW_R?MWNt)Rw*}1i1?b+68vv^ib*&Wxjxlr6} z&el@7soCJu?HLRc)~x?hUdMKbaYy1$>jh<7*=f9)L6fbsIaLly=N%sqHVmiL!#vD> z>GLjhUq`w#;^UpLl$U>AEjs&zmupVMTzh*x?h0J=`0Y=+qve&oBQ2RhFDN_dF3|5~ zBhAzs>}1cO2NADT+_=>L@3d!TD5^tksmbt9)d^qf&OK{}7tEme?jU?)Iqc7T>#)2aNRIzY9f~Cqpz~x{eSj+HlO?ClRspGY24(eJO7W$ ziS!iU`5uS!nbkv|c_RBdQ$H&#UA#S$ltP*+lLcVGtJG)(N&>4C5gWsPW#_?Rm@!5S8{`b4E z{Lj+?{<>OIv2O7!zWkG4{rT*T*7l&B>DK$zkg5gky_Cjt^@63&c)Zg0GkjzE3>FrZm6Niha}^1oR=J{#Y@ zQ{4D+HI>I{Qr8po?$@majheJB^PQ97)9?;h#KVujYd@+Dv>$BLlV8Nuu6Bj<54Tu6 z#^);T4#z#WdM~@vyA~I%#SfrIDh@I;n=XfVjn2hNu`V8>-W;=JU;^fN4Lq3k6c>Ik zTP0WB?c6-&R+me$r|sWbG3-J%Xer!bx3~m951;677w?2YWJ_D8OL52PJ(eWetvtJ*tej^w;-rQPP`*b|j$>MIa z&M)Rm#qqdB<~ErFq9#6?4-;EWwrAGCJgD>KGUMec@R*TeT6!V(vga?RJI9y7YG%4e zTitEE9Qlqu05z4da>u`2xY=2US6183-(GG{F7<9S7v<@=Wa5a+)socR%q_W?Ki#5T znID4b>3zN4zw4!2YAwxNnh(Pt&tD8Z55=tNOk>65Bh^Fn6T;o^hHaad!|x5fj`<^6 z!dJpeua$R=>!%DOki&_;^-JK5sw-`WryYfXU++2p!{ouh@0uC^mBwIbS~)tfBeV4FVAWJi?7TxmA}m9@6>eHI(J)P&tgb3iZf}g4z>NHzP)VOM)zs6Sk9cH5%GC-Ms`KNB>gkE5e^((ia~q7{OxL7=;i#^RJLTc zHC!wQ^q#ZLU7$&IC;auLa_iNem;ab62cic|>qX6UDw}k@&mFj%+0AR+2{p_qzEu4e zu2C#;?Ll!y+An4#xl3X%n1?!xI+ee3|L1(QR|lQX!+KYj@cKKum&-q=doH+&+7lgs z$>M>9{KsKf!Ex(B6IUL!Ssj4g)bD&!ZRXCKc#)qJd!)Y}KDChsJ>KPZv9!5=?(A{j z1IvHzllmI6=l4JOI{%RFN%7+Q-~H3stDpa|eF!6XrTTdOXuHqHubAsh?f)dZ+PiMF zc4j`gpJphp6}#*A8D_8c_XB6FGc(ir!!qIAG}!eX?l;#;Ts~+9b;jwWZj_hM-8V-> zKkZ!pWGXELd9<0C;#TH9Xq%YxK|ZDQ|!CFRi;Z`ZNr% z-nH!At-f!znDs|%_s-_*RdL7Tw|>|C&W3hApKUlfhUi`LvI~=ZiHfR&{JbU?T z{R{l>t#>{Tzxt>%lW*wz@WT%V+t}R;oBa4s|1$KQ;y~lwGg?p*Z^D?^CF7s=&`FCDTYo@r09UIHunTbVHgYFysjq}x5VG!bHIs|5y znQ1kX{grdm%f0<(8qS?zmfT~h z_tX4Uv#Q35$0y>d>dl?%Zo!dhSmD0tSv1>awmQkR{u}OavF9GkAL7}X(>IxY=hKef zYJI{>w~ICOS+KG423oiHtm1L}v_b2Gugo^!5W^lWhjW?5Ob=ZTKTZuCnm?fzVs?sH z*PIWUGFP+lVrw}$Ju|&F)(C%rU6k+7W@EnzP4Pv+(V(s#%_2S!`uQhikA93rw-*sohEce5c+Yd9*w!=yf zvtiGD(%gmYrQT=0Y%zO$qZu{gBDJ&8YEehU1Y$J(`f85WA1*CtyRr}ejFXzL8hT5+ zbF^-qIr!?O>YU^CXY;lAS^B_7^3UP{dSTbgsjszXqpjDlw(W_ZopCNZdq2*{&xmi? zw(hZY)z7&cUSVz|&O9!#-hiPmv@o6V>T}b@s`(Y{c@66u9MLSKmR_#ZxE)A@e{3`u)x_2k}jlFCd z{SiIcr}eh+DKNPG;siQH_p_z)oYQ(Tcf#nGyRWzNH3OHpSa9G#=D*b-@W)`KTm9U2 zalv|acPD)IC=7)5_MLcFbVT%N;CHA8xZ~CXcM!%WrZh9ldYQvR+w-X=RsJ_l9&KKJ zc+dqc_GJI$BP(*1&afU6yj}iuwL7|39pbfL*E87J!Pn9^NLN7&d6=)=>b&9yK6vI+d-h1zQkYC*@S7MLNE#GzipDUNjE~$r_ z(I#$D*SXfczusQVl&9T%|I6%GzB9Wr(K&!QT*>aR`{#?PE+5s$62762S&sfpeTiem zv-+Q}{m-27R(rJ6y`IY-(4eQy0hgKT48cF1S&8?uaXU_0vv#`&&h9jS-WQ$|{opIr zS1x4_Hv25~$iZfoYn)r@XNr^6y_awjV0-=ClfV0}95#Q_xm|v#Ik<7K?IX-)y7jo* ze$3<_2R?V0)qK39VQo4S_}7E(X73FLhGFp4@P9b=M0a<--)+9yrJa0gwXMHhzMWsZ zS^VGJ@@%*M4P3GrcE9`lbiQ!EyFJl=2{Trcz@<@>V-M+SFBXI7kHk5izSrN^hrEEB z*?s4u?X|pz?~za9K3&bOsCobAnZxW+obb-Exl(E)?89hS)m8C(G3#i)OKd&eJ%X^rC(c%}ad`PrF`Zs4c3h1^9=4OMhjq{z#XEr!jdeF+j8_hx=8B{FC>Wf6 zpVeZO+3eMzBiMapH|a#u8>1C2H(M+JnJZ77%jYgWNHd`t=wjGD-8y*ucv!qT4J?b6 z;!3vN+=_|fZMJWsb4QnWE_*80&}TAzqk7VMHI2P=p^G0D`yF%=538%gp>C>shA%&# z7TlA3$ZG!UP8tnsaV^G*)zn*;TR&LViF#t+zgKLl|M{@G-z&fTI&DUJBjq09Wv8#V zSFM%YdbK}KyJvbj?i8<$?vzvHTW^-ntaV=&)iAOrYU1#>OIvsIebpJ;Klw9lMl)m7 zL}`ZO8Z7nv?DkCe$6T`gY`|guZ5$V(&ooDiM)pi=IB^sgH`_qt-JC6$IXgAe8NrvE zEIu0Vzxf!w=;|NhC3(A^5VmqUUr#4tEsRfJ!c$$@;)Kq>nUd-fcolM>lWe=5CNb~5 z4{@UCca_@~r)~DN6~_SHEFTp|!l~rtbn49Opna)7?Kr*?>{ZN#2M8nL&yMp+`XaZ& zPGHt>0D7ZxLNna%znf1{6U!&yQ~8|v?h{Q*9C%z)Yd&B{om+FPwzHXZDtGgF2iZ!q zWzB`qt3LEOh2!7~EEMWdjPHrxAq)%$M!?5lihe-6I()3fz_$MwTwKv1`T5+Kq?RvgL4}w@*4z6Etq;q*V%?`R&iz7zS1-W{`F|MT2lzUO8(r8;d-@x59Eu~gl5Es)lAG{QhySYsGHM0)@!rXnb|C^$0HGg@hfZj zv%8%&8maIt{Yvm_H4Zgn^#nQ{3v6^}oz~;S?BR3e!#l8}Vt2iv?&nm`Y8J?NYbmE< z*YTvrvs>G}FI&JLT+R;RK*?Xsjx^uLnNagqU)icIqb6k!a6V_VYp`1HuVyU98Fg+t zhhu%7c>%+0#e6G!Fx;#BH{Get_Jtmk7;C3L*?C%`)*ttd?uPoG_(E^%NVzI3l|P%4 z6PGWVp|0M()bG`sMBClo$bHP><-=)k(#pG0Z^)fy2;Iz9Jbdqqvp2u`bNO(*zV>*o zGd|b%-!9f&;cK!DH#m))1;_EQdLHV1v?p%=V;Q9H!@hi8aaz=|4=BuaBveuh!CYSts z`Ud>Hb!)B7M4QPE>W>pIs|5{sR_kRw^^&o{YEWz0O5Z2vWJ@<;M8z8`eU4cp;)UJf zWIfL7y&0As9^nvkdVpLpxHd`#9 zcByA{zjc$>Y<3oQJ44&m?uJ0(KKg>KA7wYsJ5%6#W_q57SePfjXk z2jH)R)pD%u#9Vljjb)WQiAN=|MDMqTFv$M7nze=r*Uc^*;b}^fL zt^L<0G$TeU|I)9jhma56?wrzE+2~Bn7o*&v!J8d{Q7spH(GjAprDtj+>|iv%aV1Pf z4bAx<+3$Xdmxlh;Fm-1%`y~F9KVPnC{1boZ{`fJyT@Th&XySQLb&vmun@W_ zBl(YO#qIEv(ayxVxG@(un_-oYRIkHjxYF}n*{!ydO`xSTrjFG!EcKqN@$%Vh`r>9| z{9rYGhQ4RAI|!?yA)+?~Hvagd@3O(=L!HaL;v=}7y7_u*i8DyU2QLD5o;}(MBcIOa zFID4N>g>bk)D+bo=8L)b1sE8;tdV$P&urZ7&-$gypU!93p7a2i@?eHVJsaC#Oyqimh`;aljZ(Y@WQ zzxt)${;8S1f6jguuk`Nv4~Cic+53@f_@GghuYuj+>dfAkW7UHK^J@S2GP=3nTe>sk zlXTq|)h_adSISGwKtJEP!vj+{q_;!Ua}KZ{XU(3e)~7 z2fI{`sK-lRq#gwru9^((c3O%L-b)*zyT9JgE`;6hX8Y+GtEKr~chmeKbl5_EzNt8d=~s^7fl#?QXl9^Wm;fh(#%e9yKK0Pi=;b(_&a36hG>=Tx)pZXvh3!`7mFVlXX?fkoA=3ZVsDi(1^ z^Qq=-=^Mi7(7!tHA*;2~vN0=R^MB$p^x(4SPNKg@^Y@9PIN z=gzyWbZ6XeyezMsLJH?3G*=^d1Q=JRkGZ>XTgKn`tshwAP z=l%{pDi*+NG%wT)TYOSAlKtvpYx#fkz((@p=KrYi%a8Dg;RjDX3GeI-4)bL4zr(D% z?xY&zNY6@t1+PFJY_{RQo!G25>0W!^v-Dn9dmb}?^dwAnr^F$8y&k2j@abRwwe#I` z$md!^^YRv2yVH7?XtwN?cg=^X-zmOcXiwR;(awUt;Q9Q5p4=m`O1X`>toO@D?zhIT zeDqB=y?D5LtY>k#Gb7J~)hy)W^+W6DP+uDDcdC<5wARo4>L24ve4hUfM+g(~{v(~) z$>Ljkb1|Q}*xHSD@98-1WnXc%-}>@j;zh(w%jQgUpY+)4IsZ|%Xso|`?t^$=#SnCc z)SJdyJ9W~5e;@WW63#rj_3-Rk-w%hmTFj*v_s!-refZTs$0>U8sfI^3aXOp4|AzWb zdz7!lx9^^luMV*Y_ycrZFx(p2wdX0bXuJ(B;0 zb;96>noYm^`%5?SZI93XcJ4H;bv7$Z$=P4&4$w-&$s9D`eNJ`y`PK^-L$7EtoY?bT zZ!h-Cq1pMNH@35I<>=YYZuUQ0AYOEDX}Hl)kvG%IFi8F!IDHj;{+3n%E;?Qe-?)7}Jy194`R<5Qp%w4Z0JC-e&=hfqWEH|THtbbe5v!H zzF|&)-zRSo8{@THZEuJ9;(S)`gwyyq8%=L-wVIRt*$Xp}2dZgrW}o;hwbG?(!g8X$ zzW3w}v48oj+HIOTxAGxsUWf66hCYRINqNELo$k7|DrTXX&LA%|Kk~EW=EvJ1=Gg*mJd#tKB^sGC0GtonJHJ@ulJNxNLNf;r_T8llc?x zEoZ~I8q422?fYjNyZi9NzF=vCc5?p=_4)8tT#QVKB z%{mzMPPv5MCKxmh%t{2Lzv-^MxBM*_^EEoIG_*U=t9(qCb z7UMd>1-E;at|K|C{Wag-81eSczQ}LAfA-+#%^fUmJdm^WUPIq} zSnH5mh281##9{r9vqwW*FBVzOUtcMn94&vjviacb2XQ#fdE+x_Cf%#%^zx_Qo;@3P z+pIMBirxmAF0@H@@>?(fGh$YTp7nSE^(L8puFu#R-+#&c`cKZD|M%Pk^J@0h zhG?0%pASCxvX~}JqO+*}K9?`Wjk&O2Pf_cOV~G=JM)rK?im!d~*MI6B6yxWsU>3M- z@Tk%1dUCg`{r5uWZoiuU-7vA2e*MS(zdWEbE@!-6e1*d_8mDog7;FAPXS=(<+Rt3t zZBBQ2#EAUH9!YRTh z#9lLL8JV-P(zzFR;IJ>2=dC>-PFSo;i+8OvgX=E7->aTZ`^UZ7Y7PMGX}|MzFPo!Y zbgeUjKRcF>bEgjDq~N#>`nJV^Yyz&$pkM9mSM!I(Sy%o3PHjYA1T`#3^_R@IQLJ^lR`%*cSPk-h6YSaqIcv>#c#`Npt5)c%=Tmq0d0vn@#5b zXeiCLKcjo{u=pl7VI%PL^7Qt0z1UEX5MM|GVDHuXHL5qj%@@MRR;w+j@6g$&1Et?y z{q9kD!gd&kx;&f%j;AJo-zGk$!3_soE!JD>F7C(qxm};ydiKPZ`N-lyx;zWTR2%s^ zxP$(C8nbwS`r77O1NEkXU)4Fk)hyVFVpVIoT--R{8VnlEZ^b7ne|_aQW(0iF44Ho& zVx{NfLp}bxZ_p1(i!jcw-_M>g-Y_B6KR z>6cf)2d3lc!+~*T=z_po)V==w)s=MVe_GDeIqb9PIJt{v=N%S9s}JBK!*}%-vtPI@ z_#62B`bd_=Hl4$rW=jn-C|SoTjeEUc)g_0|KiW(b-x|HZkIdr zJGVMB+xbK@m}tswR9oFEwxQ8A+WE!Xxc$!W&tCoJAHrv!;>$PR_+4DmW{u>d^yTBR zIU_?)Yw z+WiizC?}P-PL+4M+ZXc}^sQjl_U_hOpLd?S=lQsWV&ijR{Cv%o&H9ErziXZMyJ1^& zbXUS!PTor2xbV$9jKg;tx1|u?KyEncn04@~xqt0ggSI{?LRo)cMj6J<%CskFFFi zu!ro4dD!}e#oy!E`+ru)ACWEo;l{(W|MTi%F;sb1cVg&cD+bnM zwwN!y5r*`WPre(@FuV)?#kQ}Bud^?D^2H^%==uuIt=v94?raXV$-t~a4roDr| zqkkR`bhR_RncY2Xj}ObWo&B}$D123&PfxSn7(KjqvMtBOOt-W3)Azc&x8vFOd)cGQ z)n?f?+KYSLgJDi#cm7^?=(yN>EgQvO;D%ps&CFP&b9SBfP&NbpHOy4*e25qIrNf@p z?}i?+?i^fY&DrmF$eHQLj2y?cDqmK=$B(A>ramzl4kB-(D}uudr=GGu{$Bi1&Y%|x z9>It6w=kcn;tv`b^SwKLI(jRM-DUG}1}#1qdDz#b><|AjTAi1DW4mcB$<6WS#co%t z!#}f|-pE!n$6E9GK6jyeqV~&ns=1i$vYcOo`Qq$4f9u&YeH?l-%}Wxuy9d|%9b#@h z2;1fJG!}ncF3(=tPc;y^&~*1pFUwFLD#phb;NS7t_g?+98tm8I(KzA7s`$9@iR0|i zMx4!w;*8}mh~3Vcxlu5WsT<`_*`>SPouB3_9@GoB+nuAy%tt(aCk=@A-5t{%A%fzPXqi7B%Pt^ei{C z5A>Ye5ByXZ)b(tknMr0i(`TV0p?{8E%w+wb8~G?bAWP{Jo0)^}x|AQ;%XV*v3F8+( zpXSEx>=ylWoT0te{iN9YX8(Q|cCr)iNe`fzYVcY)mA=o(o&lb<8IOrZ5nL0Fvym2y z+L^fuG;wac{lzfj63-d7Yc`J=f+yj9+ts>hCBngOz0(ZBd<%`0t>U8bY{*jYA=amt zLSJ{I*hL*fEnvGG8rDGnjwZWYSN%{u5|+4E-CHm6@w;F2|LK9(AF|n6=+7PIH+Mg7 zzW#N!7Wr>{H?dWDp*q-6e$s3m{3HFT@b1;LB#&MZ>vs;T@jm(acV`dMQF&&op5N~0 zNN1DJg13*JrdzO+22Z)GdYHM*{QE}u3QnTh)lpcUSK}B!>A&n%_qp}f@2Y{+cmJ^3LU@F8 zL{Dn8Ga~Q0R(%>T?LinZ?WoJyqaVjBoO|-=*>rb&ws@Yupuf+PXn*_TJJ|6 zoVLalcQBu!H-(K?6Q}Qd`G}@P@mG2JzZ+RRJHK)~;8GLqE#4q}-Ory7e^66|Q{dg; z1dU}g**muAetzOkzSmh^3wKaMQHM8^9VW9HcbhIC&iz&U(4RPAYz>UVtOWSbYCcn=Ag~m3ysOceeLk&xh0HqPJ}h_1zD@9&o{d z6PrCe=zh(#CTa}yj_}IW&S7GM{q8&+c8_R7&^d)AFO`3b>D5f8*vFpL+#9tfKcj|p zVI$4r-en{oMo*p&qIt9U=T9+rej=OD3=3K)`1|GnidoDelymESQisRuh0*hi%iUw^ ztOs)eCfmPT6F9K?_;vY9dqHcE{hck2phL}<>*c>%jv`MK3*+_Bgp}9NV5HMBTFxR@ zVQ=UJ41V2N$p`UkxC(UAC-My=yI}(58D_=MAQ=yjGwjV;*m#p{fascOz{-d5lb%)1ka%~io&WK$)moy~?4n}8+J`rA)d`$grv;0JlnpqMj z+5cN%DmckBm+=HB4Zo`uJvN;NeGKrz=(bY|pEy4)`6uK=y>Lo}N(kZW?5dn~wp@Iw-G_ z6N_c0`rgrcfv@9hWCt&1?`cr5ZMWa89`=)W;`Hof$L`l_5VqId)h|2r9Q17W-ut?> zqk(1}d(Lv!{c?qy`6W7Gw~I|y!w47RN7Ky1MRiZdn%}WjK7H7~!z0+k(bh^Y0M7eC zcXBH~iifurm+_U){#t(5dCjN4_{q1`D2fq^o%GA&>6>YG=fiK?H}h7j+jSoF1=3+t zCs>XP@xrhE6xRE6?%?zBj~>O}y1IS0c;)@GSHJ%6!%X3e^;DaGdMhsXIL!$dPrqlb zb91RW`ndaii1QxTraSU)uFRjUcehuw<=3+JgCvkiH*qX`i7z_n_jU(XU-?b` zQf;pICVy}-%#^*V*jRlEH{sk?_)5Hm+0OE%;!pk7_IbQsFn4mH z`YQ}lj4IX^SHQmP{X%wLo~ut74`;miPk*IaGJX}jT7N4$ww+ye2J}0OWP|47P|$~k z^PFpq#O~8+PSPr#$e*y2r=5E>s?}@{EkAJ-UK*Sno~j-{**RP4?mhd<@6KNT>c3Va z%NBQrkE=mVhV{{`pz(!gx!gI>3n#|IcbjxST7PlZO814{w^&fGyqHWqK|cxHYtWDA z4zR=K$;_7@Pj{ZC(~P5aiH9yGTkKhJE#W2O+3*2N;otMIFe?~`Uh=W91Kb5`JkdQ| zE*I7NEFWVl)H%oah~vkd_ptN!X0FdM=VzresTKska<1vD&xWxr<|~KU zZRJj5ac_tEa#)O>wV`h$JZ85Ta<%U@Z=6=)Qofz`=6XDC@w#5QtL0xq-kLuhJ9;!| zzL{YP%XBuDAAU5{v-k-1Wv9J9?MohD@8zmu$#=i|@AX>cCtiIzTVv_j?4|fPyg~jn z+1Z&Z<~ph-d^dg=Ue9Fv$tJ_M;X-Te&r-Mq&eO#07ta1>;pX5|@DP3PNH!Mthqf+G zh+M!k4F07(xz^n`H%83|hB?{(!HxJAIvVh&xp-mpgYj`5eegwgo5pA{Xm_6Wg&C~o z&*)#q+r>Rtk28S#x>P*0Ri6NUI?VmK4}L$`R65`4om1s$>W|CqwOBzet4_OFu7j&L zA0D?`Or{^6Mu5DO1`R$Gev~=#hxrdY1O45&*>Wp=MR*+(#V3d1!L)Yqc=WCEQ+T`^ z`5gLa^3JW+eXTQoz283*E&yYrgMP2t>yW2(4)H72^8NGW&^R{#KTYr1WY?KxXa36> z^^DXlRnY+HGq26-z4w_ny@e+L5&+==k|1aR5FR9pri-lVsn%#(F%eQI^aGBb=S|fI zMxlVrd(U~zHfyiFw)vScpmiYsv;RVUd3BHUokx#uiJ@-=vCJg<6P;+SzXY-T#x zG|s1b!VPL*1@b!QiJp7(1HBCJyB~fBCMPcoJ~hwQ#>Z(NtN|q1n>^=Qou>5GEpUH$ zF<~ghC@Fu|H zgDvM>f~FJxz+5^ZzKp|8YQ`o>w)?rAFyfOjT!w;;G(>ViTk+Uo&)x&le zH)uszPtJIqpD{NKxD|d={Bnt&&oTAv52=U8i5sh|Q`WqmvzjB%T3}D@uTb|v z+hKo^`t#Pe2jEur8Cu_zW8$p4E%sdPls;=MW^C`n1$?-(0(#{9>TAe(RKG$Sz0Bvg z;cm-owMKdE#ZS@wS7>qKd&C&c>*}nF{T6{&O{{DVW<1~J`<;85qo!`{A?Ozw3uCXU z*kkpZa>Tasa+lc84_Q0yX@OWudnPBx9NYOg#tG&EYQGnW^Me*C_eURHWj&Ik!{9S= z5&m%7@L2dF>V>k4s z^}&Oh7qJuk{FoeH45G+0CAf=fSn4+y1_wdk(!R0%JNP-y?P7C}*j-&uc)$B#ZoFfb zIjwDMp14()_|tlyvpqUsD%N_>K77OdMJJrtPhO94w=>J^o3NL<1-{VWyzCRR9)0?f zXSE-ay~5504Jh_)d7xh)AHe^PeN%J%22YKS#CHBL9FEyXj_;>BT zv4=X;Y0n^eVir72Ow;v}&n=!P$2QFx$(^WT@9k%)@W1LO*(>7wqz<)aZK+%Y^Q1bq z#(u;my06v<5Jj~018XJ^S3cAlL0yxIiLL9=G97PVYieV&}KCj7N?U%dn?XtO#(TW zE$)Uh{yO;lG5&ss{KNcKP5V`RRgpX;%e@d!mG|nqtz!q&6;A8V$*-L+XKYvk?~e11 z&a$zF+~iJMQ_S;sCC*nC8=&UcKD|Zie1|$RXF{EFdB^e@_4Uqksk7ci?4)%Z`yp>U z|7Y$6m@H?e${9QV*)uruXzj5->-d5dVoc*Q_3qYhFmp=`iZdYYDnD4vKn%$~$*||_ zzuE{F@T2NF*i+(qsMYLTqb2T?7*QJ^dFd>}b@p1Wjl4qnUk&`?Dshb1nR$tv z&<3CB9`4?M8gkFT@8Y~#YYuTf&$rk)z>X7-VPE7Qmx#CZiPj6{e%3hi2M=FFXX)|X zA}=jrhkNGq^jtT|p?!}IHO4HpShc14)Df-6$@#H|&t5=hD3~wHb*y0jw{FlU!G1W8 zWe1&rE-_C7+iZNT?tyc88?39fp*V4f_1YBAS0o-(A3;v$NzD$_uhg*JZCS6{jJe}hpR=E=h+kZj>%1Q zo!~SM*mLo@46#v;+`#&eT%QcF%L2KqeNllU!@0?e6><-(d#tj*a^ciuH*Z|wzRkjc zu>Uj3S}*s|0AS6$k9p#zpp8Vn9Qt^O30)KGU3Gj<0z6B9;v5FKNlo_OI>CUuTG9Ss z>)K#Z9XM})$1KFq3i#^|ciy~ef!I%Ol64nnpvi@jQzZsuPt+=R)UzdaDo4-Y~m8X0+*eAK#4mgxEDkrR|wT+@U8G9INhdhHA?o4}& z+LiTfI0vjr9lvTmBX+#d+$aCVC$mo0rt{+B_$hI{5&5>CJZSj=uVlJ0>TO zJdQKh=6}!K{x16T<(q(0FA&d8$RpI>lo#r=7@y1U{5uX2{5pGK-QGMzy*B#>x54r5 zy#8C@g!icTR9R1J8Xff^c~&_Q6EI!lKi3jfLbJJa1nK2GrUic z^CU0G7`u!wao*&q<^jA{YIVF@77XKD^oZ=436Y)N)Ns@;r8+eM` zXLUD<+;#KOiW~;)ukUUiV4tWwDEq{n_o`i2b8DGrw!Z9~SMh_u>0`}jo6b8r>A7~@ zo8*JeY_0O#=BR7*0c;bu?QuTr$&uUd{9ofteRF{|*`SVg_7PYpF;xnCJHWs9iFfVI z(&ot}_6)3Jv(#F*KUjSLF~bz=u7;!BwlG7JpDklc%=i18pCY#3{?Q3KI`S{N-gz{N z)IzIq_MACU!e`8OcG<%t>;W+_YiF*N3HTWC1mC4zN}l^8<|gmV{u+C`)F^OfRhIK? zZ?<~e^PC^?1@kX;2y#4wTE(7g=hle7hgt#oh?<%$Vl=rp8~DgEJ~YfCVn5Ay?M*l4 zlz%3^<{X?7YwW$Se{rt8A7ThG5a+I^!E&5KpJYwiJWq?>=@Gtv`}*^MU8tiW$2`YA zr0t(zfA!yy@Yf%nN@Xi+Pje8ic<4>Z_Mu}JTyz0cZd@j&~^v{&ZI>U#y7hCQ>d z#(5&vlj5vxz)tB$T7@f9!Us7ASsUfOl#8SmrM&bK@6iLVuMlgi=cN9MKc|LQ5^kpb zD=E&5bCb(Fi|?XNgWO_c-5l#>4WmU&G2ou6d7H<_%Ab?B+~w>{;NNz|5WyMrP0paw zXC_&LpnHZ*$bzM(S-W-ofm)?O=l#=f0%m6aY&di5kK7jd@nWL(s}Fn!e3SeFd2+GQ znV{ddfITW;7pi>k@gq1!#F2gYlTCbyeTC*~a;C(^#1fnxvqaC-Jn^pD0VQmUdgkT; z_2Vz1E6;xqeJKMmLH5VqC40rKADsX4Pt+!U3z~=4=)||=3wm#woQq9txi$5D>K5{e z)QngL8;I#M$cc-5x0-bFnB;%0gUy*Y8!s5Ut2;j+XLcTdTGpGy7Z*Nf{t109;@Qru zaTZLSd79$H>+lNOJck?y>#iN_&mu8e2~2kT?hE42*VF^hS0V1Y`R@1V*7HAs?Y$t! zMK=JSeQ^IZv94TvuzzgEB6j2y_j?ZQg*o=g9+(9*dd#)ez))Y%dWCgT`!W{L_F1Tm zxeq6IB={TNB`r<`)+fg>$-N6TA!B9Ea=>k{krm>wCC=I!_xl2K;_SVwY6ry3@mXbj zbB?|{G1br$M~*omUs$E~W9(*4?#X}tZ}eQ=k7iQ+fSswEqAk>)i_x3&EW&&0fCcpt^EWV)Ti9Gfu zwo5(hDRGK4%nZO5EmG^69iT}=t=k^FRdXHoP<%x#EAuh2r?PkfF`K#& z)(FP<%Peuf9D{IvxrcJ@>~F|#gK@C_aq>Xx^`V~vduu^J28dUvf3A?HLEFH*ZehY^-Ilk39aQe#W?r z8KC4;*a)-tA*$+pE9_<7?9i$ zb=d9mw2v?=*Zut0(F)J%Z1Xg0nZwVD)18Osu4b9_h${EYIpYKFV4uIMah~g9yu=9Z zf11x0pOXt0xJ>wuD(A)iJL4$xeEU(vd$I+yv)= zn5P=0>KbG?r(%0!>~0HRTZTWUCRUy`P*bE!O{~fp5YH8xGd9vrC9y+Q-hCH4Ywvl1 zUJ7kT<@~2`NY(k}UCdut+YM~Z0lc?uw9(b;%HfC2?W}E1$>p8(+opD9uZ4A?GI^14 zdjURv=HMaskk8?M%?|BdSCi}uI9ANa1gCNqTAh2`!FF_6M?b&De#>vjjt{6=evaFnktIH`3@=L|HkNyhv3p?~z`C-f~|L|4B3G0edE z0$hC`ob(+2*1C*63Syvgzt!lR?@{l-F3ez0=4*TSB(OqbU+&C`H9*d*_ag^+X-hq|ndymV)_s-@>y@|-$tAW zj#$lk@Y?hOzDsOpxpf?Jwi3jowjP2dGA6lIhaTD*ZTvhcljKlKSD>>-SveOP8 z;)~5q>}S8jtivIDwgtv2A6D&NXNwLv6ZU3lleI;GN5tLICup1PBUeLCov=;gC4R38 zmUH;UcVTATGQ6Jp=3X>~SJ7UhHpBDOv5g6yZHfIcA9Hq+br|RQIm%?cbg`5w7#WX7L$`t5O;ssJNuBu_w9qTuXNR%leJWHtc(xX zq{b5?UdeIa<+oVFoavGKaRxHne`l?!p;KU;%}ca7&O<13C*>l}@?Gk@7x}$2pFI!v zO#EDpc>8I@EEeGgehAK4;O-kEshg~JSrXjS`my+r7`XZ*&damczQ9_DMT!p;vFi8U^d)Sg{F@{gxEjy)MP$JjGT2e`ICUSyrn2md{#nhm9vT<+NjI_0d3=&uHP$fH zh_v3A=I4!1SMfvU7S2Vs|Hqn;u}6bkvW;&tUber@m|DKLIzZ;K`q@=t?7#Q?Rk(+0 z@7NP-%{WgUE>}?gxPHQ33HeXAT6&u$WHihpRItxZ@%u-7Zh^d(L-#!I_b@OtES=efgbB*i$3Ibx9{ zyd1H+EwD~=`=G&(kKCl@G2j`T115e|lk;%IcaT?FBPf6mIHN+&h;xYKc+|)Z)E<&| zYaU=-XLyww7k;Sjv$B5X8}@bfSd#;4J7ODRRBEWy(X;>L+aJ&g5vNwa+ql^Kan+b{;_AvShUI+-4#RUj*CBS&|7vD4W~A~TD<1+vtOA#`4YbY<^@K* zhM!*Q>;-+D`1lO#4xii48lywV`AUJm&4G`kn8Tjv?qW~5qx}QUF?SgovdEpTfeAOb z<3THfXSNQ$fGzC8o1W4WlED@PU3Jcje3c4zMqD(9-xpU3czOS%=hGT_m}SR3v4`Ke zkbV5VI-$l;J>nGgt$Mt>akd;$d+Acd<9YWM+bTYy&l-@k^ysgR^DOFwH_11T?!P$U zi?A2_pWKcv+<6eKp+&AniF0xja+u7w!1mm*gL_!|30~TGX-*(A^}zo3eL2zq~;8MAY8157Aul8uQrJS#xK_d7jJx zf}R0u;P>kz)Ph~=9^jA8fMf8S)G3cRZ`%F|ypS|CD$kFaVQMgG?~Dza;2U-0Y5pz= zp4q$r|4Q78eU1^75vi!sEdX zd9T$9-ypYC573&8b>uX7T;OlxN7U}IMxjp#{agIGdxL%t;u~jl72vo`!57M`i~TkB z`&q9xzOwdeEjRFUS#L3~1kX@m|MUEtJuzcz7T7v-GJAE^Xtxh$6+7fU*}u~vKN8=t zkKTEk_LJ!&{2BLgnYpFvQ}{eR>|7Hq$C#L-IWjqrc}ACeV{Dsa9b6mdaV`7Gx6K!P%q*e0!bsDRHLie4e?e zJ(fx0RC|uJ_43f|v057M@pJeRp1%i{QZb)5SAuJ${No#HE^vyo;=HVnpZtP0&)3w<$@f@~Ci^HSB89!T|07^* z#O&s?SHAu^#F6vl_A}%G;;^&S_0%)8kJQ-C+}B<`>z8UX8$+)W8>-`;<4#%6^eoF; zQm>&QjzFH8<=*M1^Z31+FMp3NKd`R*I6AyVkI^R&!z{PEFMdNKk652`*#T>nH@ZOG zI%b@OEn8tQi({;r|gkIU`d)uTGD-j~GyhS+O(AL-=c)8FQ4S zU^mc5uWd*FZl%Q?BtF2u=ix5NV{35Ux8UkppDSS_s23hWD~2=IjaMc6AoiwsJZNLGW!{<@v2wjUOR)+T8+7k?>>RYu*dl{ z=PMBh$KW!me_~I=sSaE^a-$JBkUA?{x5;_HTa6P_{QUyYZJkMMQJziElwiG`{np2i zsL{7Ud{)NRSXVM0whpPbjPGJkjUlyuyA@Yi#p>dr=Fli?wCzTm@o6yGn|zh$kh5=XRDCG5;Jf^99UHz57tL8eMfSc)3}@`3{-4;E zd4QbmJoY}zKDoE@EQ_3x6=Ie&`yKS(fo%S$^N|5d#r_x9`aFmbZpQ z>~6odH4poDt7ov;m%fVbKK~1PALK`1YYo<~6V4KArmy5X?A3Js^g{cH9%gj6iCYWg zR_Xwrg?BszyRwhix$XAGsQ>8v@{gbX3^rn&4IM7dXq`JU27hsOaE&!t=Ch1P<;r;G z?FX2E6LzinV`vb=D8mvT~k~edSf&(K_oQKd-)9miR%Ae+D~g zU))0Pkh4#1jnDS)7s&gI#1wgK@IHRy(f5CewwXQDCzg@-GC(_gpZ_+9v#)&qjJZdz z!H($F0sEZEwcwqAi(zjYtVxYC;~Ik-JCy!#htuVLk&jqaME# z=MLKI@7%@}u$&$6sx`0#xvUj*nf91Z(lQ?=R&cIcnKkMYClA^Ety zD8^_F&QBY^Tf)AmS3D$6EwGle_3gmpP4FJ#;pWoufM0><;%ip$9ZTGCIX?DBsf%RY z!~Iv!&)8m_hJ$<9UwlIQfSjFmO@VW&L%BfRDh6($4px=V&>uUeQN4XJa52F+=Syvv zjQm%8p3iRYyZjtE{uO(DSYNf5o#SRKZcVks{k4BxE!!N=sco|dRh)n4V`fLNK8JA5 zrqr3NVRVS&?dc11ySWo;C6=^Zd|rclw}js{2Tfu>lh~XU@@jjc#VgvZdmY~(AFfO+ zk;ewupVlH~ZLuHnR$KgM&g%QfrIv3L>L8r=RpLZ7NmJD9GCa3fgxo}RE$nj;=aP4) zen=YI6XFu$IBkY=H`EN2e`Ifq{?@r+>d&l#-^w$a;{ST=v79@3iRxO*1qr&bytDo9 zo5Y!U&Z4y(IVN%LuiSfUa>jQVd|R3G9`v=@8!6zjTv&M<4sUc^%tHPT-6^=lFJ+)mg<9R{7CE8+DUz(8hS^M-g2g>!(s;) zJIBPDPeZckxNi``*0s8vm;eVE>I#v0Yc0$!ktqwLeE*0)JNlA3ZcK zqmE+zx5?Raj=8y}aq&D@vAhF0{#|N(&iYXA%vl~{2X*}E8T7YWoU^qX^um#^IJ0Yq zbFv4gE35%`Kx{Y;|5g3G-G^_nHE{p&Nrn{rS~4b4Dpsd>7i!{y!h?E{rBkQ zU;i!e?MuYTbvR9JV(Sm#5z2{8)3YJRN9~n4{A%z4a73KNr7sn8O7zbX!|uajqjt`p z?UPyIeA_Ez95;jQaCWq_g?7o+&Od$~-TUdUA-2qNe#)Gu9`R!a|1)+*5A!I;tdsTT zGxlkL-4wVV<7@P1^5-JI0hteFhq|_8O zHrW33+vp}3WsMwT51dB~Kg{ysj>xZ*ccXu(@EQ6WHJhy$=^xb8uZ55Rb^De_;{LNR`J-jFe6pL^B7 z-dmeluxo)&gw0Uz&$w5uay8M^09F?;aIRPrZE}J$CjUx5mB9AM z?@MhESMhK5kBe=t&EN_()u@i)}F$v9D4sDd(&>(>(O~Vt?f> zJHuuB<}>Q6-=W7&YzaPf^u-VGPSF_QytY_lxt7M1Y9n5PPkRWaxP`sC1m|JQ-RR^Y|n2?h5DUEcWNt3wj6n`9t!QYcKy9{OU*W z6nY-X{eJy#{{w#nububxzHhLPZT%>AL><=xvHt1&2t0(fCPr6N%({ZTNU9(BQVo4-ys)n zjeep5_^)xtD$k-1m(S!}Df|88Ty@03wHL%l%iWDoH`H$>SXcEZ<<;9WG2vVuk}HmQ z=V0&1-&5eGVhZYLRCvbq>*#oMKIE2&6BsLrY1zYTox!$&$!%s*(1i8uz%)J_OKZH)Hzqq zAu5umjj*8&{;hu*e(-@4*uej# z$!p}12CfiiQS8dRKu&-;Lg?+5Gi2O@9XF@cPiw2KyUWQc%0uEm`L{JR$%QHM*%j<}()Yo41+6UnQAchCF6x zTiIu7UyFRvRpPfSwxxpqP%AIKNxuSlwVVRE6mo9tR}jBH-8jIXkk4`V{;9aZ9cE9k zaYOvF{mSCka?zKm-=?@%@}Gxb_RebFpcbKyR*|()n|O#VUc(;TK#%j@x9`Ab==p<> zzK%`Vx%Fjq`-lHGx=l~<0``nQO|j( zJ}?4{(~eyH@*TD2&)^7uLtG8#i}QJK7i}{AB{_w&(2nu*o6H4U>TYqDiSs${GrYHR zkF*6J_RfYJz6bu62V-%TMTPa;qmFxsJy;;ONU#r!)EVqiEt;2LtL)jyvM+KxzCY>8V*Fm$PSPfzMX!N4*$lj=cEGe_<{tG1sR3j@nkRZ0^N%`t?8k?pOS&F&|hT zchDIPCo|jW<)t>GcGm{6t^G|?^0SZ7C7!}byFh$>OdY6=O=xl-FMi1^;ji9B+q~xy zxcevH{Djubljzo)-=mu^eu*wVqz=z{9B^*luWm+vgbTaa+zdF1oXHgLVSZf4Z(D;? zGisT?OK>jg#yQl?7h4NCm$n zCs%tH&I8 zTE&p`yV^Z@1_f+_bD=yZZPqyOYmKRghvc{B9CD=LU2=}qVKH8i`)VF`#2Qu6eU&pQ z|EY`}$zfO34As`Ih?@}OXP8@Z`0#0T^$~Mwcvojh%Uw37(uc^oRX-^~%on(|a2(a7 z>|rO;!vnAk_>kbOxVY3-~Aj7v4=ghu@Er-F4O_aBg@{`ETMRa`4;au|w8+%w5Uu;p4G~)(qA9c5lQNwr;%$K3jX86(_^S zsxf42Y5iNDti4yyMa}69HHRF}QzX|hHkGGTq^_BhSIPS))EMRbiigNOF-EX%thS9k z0SRI^>uf9Nr9UW`PYpU7+*xg<{g?8ntdW_cCh>jFnpPXyJ}P79MRNk~gnA8C zzSB9D>RHNDh>@qo!2!(GYuN74s}8>7Y?CtB>JGU_$$3A-Hc8HdyjACtiJ6#(FTx2m z2UDZj*w>z)EdD}Gy$bK(+8DzJ4NQEWdZx}d7Jn0mGw&$#bLx2ot$2J}g}-;st+hkB zCw=91ka@YyI7a{W}L?T$#9nK=PwcmRK(NFVf-x4Q3b3@ zd~I=X6zVJXl-L{9yZR*X*3@D5J?62K>L@I-ZeqIT%W8QAKLk$YJ+%k60$)H*LJ@zZ z?y&e!f$x`xZfxh7-M`BmcLpEL= zkOPR>S({XUxl7D9xDNM%++)PrI75Aey|FK<$KQ>)Um0SFGvq1{-uyZG@`pdei{L)f z>)vOL)pOar&Aec+u^!lvHsT_>ITQToHg|ML?5aP|KEB^N2^D6x{M&fkW6!M8{&;A*Vf!IMi zXx}3k-ah_7Zra0_KSpa8(A6O}_3YS}clhvm^yr6wjjlZUo_@<8u`$dRqp!+-^L^^z z2Wp0c6QATr*RXL%JTtL+XD3>2Y{Q2JM<(xS5Tlq+=_kW1U7okddCT$NhWQ2O%Gom$ zzFRF3=LqfJVO_zN)EZl7eXUP~c_f@=a|F4h&W>?b`ZE8W>K>5aV4t~jax2w=5F7eq zbt~G3!>Ts4J^L}@nwiE{xO+`}gFRt#om%)S`^_)mGv&H07Os=K^@s)A=mkv4F-M+5 z?3CI7x1Ya@w(t*|*nD->o!{3Wp0cL9j=ec#eJA*w4)u^N>Obev0NiEW|rDh?9(jZSLY9sJd)>4f%wOJ$k!>~aW_Rn7B46%KJ`)6N>ebwqa#mPnN z?N?9CIcW@xl;Sz%02j$k)%gpvck$=yWhRJ8?++clQ(QD!jdU zcy|f7ht3&yc9A%aF?i6S;SAc>(qR4OIrr)>84LQ3o|8WH#s%%9aWyvEf7ceb&U1D+ zAEBp;JjWgkpP^4aXpWWTy@IZqzsJ92_`WdX2w!8bpYghUU~_ZzkVn_y>XVaJ@fSmU ziTnWTQ(?vi>*hVMUog~I%#W}$`b5_+!+Oe@G$t`m62pD0Fzcp_{~V#=JRlEKx8FE$ z^UjN4>(nw(?^xW;9>`5NQG1`i2y-d5zZr0JeYLSb&@~_is+)Tdv&r|7A3h{rvM#ZU zpBkK#!^V0Mn{>`$+qTX}m+rrcG9z?=SZ{S6dYo~&Cu)xG61RQ)1^D+KoGJWul^n@A zva1_s@d@M|*i>uItJn#732ow%#_q+?bFy~_oj-i(3N}5g1^$1I^Hjp;n4gQoF(J&dyy2vvF=fh4)Rb zAEAc~uMS_Sj`Jp%RyeP$s~Exz^&MkSwP?;fCSRdX)AWS{*1nD}v% z|9>%X1~M)(&{j zZR}{?v%-4JRHvbDcMJXNqx)~r=)lLcwxU#H3fGg`7I>@A?9B3Y>h0zd=gD(7I49nL zGHWy@7O{3{d}&_XBJOcMhMMJVFz8+CEE&G5LcCMtOp8HSADJ2x;upnI>~oQ`Bd1gh zM_eUG?RS-0m6%9|-j2$aI)>OYZ53xup=o#caS0=34mN*yOF8qXZKdPKvV|@D! z%bf4L^_E?E$MmrA8R|dDsi;vaZ5+cpV=dK79^gOibqKmfe79QN^1tMh2Td|;N9b?l zoO`##e&xof0Vb!r$upM8)zmp~PDhfT$>6iLK7B#li*_J&R4OI;uNtM(hNVqe9Z>@5je^?aw8ik!U@ z{T*iOVcXK+4T1lFKhOrMP2Nl$ErT;SjRdY(MAnS%X-;W%~{L$P| z&1mb8>Ou8bza}w6)>wepxWUhx=i8^NK6nw|B0qPPSXD077|y0T@d;ve`{9e&6?*{1 z7p;}d!#8mK`@}{Q@C5H#iM0}AGzL)rXLXZaEbv`5FU`f<)Z1I&=_UNL{Pjg_%{=SW z2B+%sZ}#iU<(c9$jGL`lT2Iqw`Q2g<>)Z)34*9Yf_QkvC32Akyb8MHw<7x1S%vs!>v?$dm28*b81)CIwOS;HRpaQEi3pa<6? z$5tEjDl@2ByXW~iG*+hMg!qBb|H2yf;6|SR>K%9oy?w+XVyZ*WEWX!wj}b45;k4O5 zd0TmMV6_O;rnaxcS#b72+9Pg%k1^8%=VlIm=;3EiqKB`3#h>6;_&sYA=dG<${}C_z zKNicOzPf$wJKmkx5g%c1y!rN!eO%+u&Q&lrH1^!VS8vjzvJHNvCQXx=@c7}2=qh=O zJxprg9p8RI%mS`WzPQ3!Y_U$xWC}BzI5+O8HgZHRqn2mW*pvN{6PzSQRgc3xi(yB? z>>S=x?QG}zSQlA6{G9&<_c5;HjLCUaM`cVtGXX~w)7&A?FXF${{t7xp*h{(dL*lnS zae?*NIbuXPzVB7HqtiX`DzF@57V+`?#u=WGT%7e3m$n`#pFByfVlTIP$W6XK%+6&m zoSABUc}PqrcW)QY-Uhx^{X*};j=EX+wlsTM;kgEf+(*vfTw@d8w1YhaC&vy24h#2H zj8=YVI0NGU+>ILiMr%g$#Ls^YM<0J#A~vuV?mYJu*4sL;y;kC}L*kYZ=ef=E%1g2q z?#wNF{N#|An0u3aym1zeE_s^s8P?4y zu>C&EI&qI@)p~_}DQWC@8ZP=r-~2-T1^r`mI zOU|jauSHIy_D}wl{A%@vGpwB&pBZK~sy`F@3&pAScvj+)B4@$gcCiliWz7-h`e#C| z*PJ4paqN-3PWD4M(_@Inwe}&qVShIKcGk{*4Qo!;nVkRatefM9a1-UEW53j*lqa0! zyjWwgcPsGIxj)VxcUHN%lzI^Azx%UkIDFP9wByU*U19Ff1$D#iT>oS8FHI>4yY?$~Ie%;11$C6toXtA-z&^kRpIOJ}G`Y|6k$14e>K2_PMji6+g*|dGVyc~6 zXo~Z@=KMMQfjY1IU%UxDKE@MeVnTJv_UIjRrr{Q6W0U@`Jo*+>YLa90eM-bW&e+bg z?#>L_yZa*ie{rZIxM^xdEfKrUchF3InxXR5)&4!l&&hMv7F?jtGh|(EKK(h= za^1g6V1QF_l^ZYq1YgftFPsbF=?rwc-5fhMWIahTZ8(|(SelJ(T*$BohXYk{4vx>wYi{No{&Fz52nTu42(dMb4 z)QOu~_^VKprWPbeQazL&xpnuD8Ukzbhuj)m*b7-tsdqeEp97F~+AR1$LC+U7ZoD&Za)!SVW%T7PT;Ez}Y(=<_8j2t)Ois zZ(-xw!{`>e1!dyMIz43ToP$I5bj%v-o0^;fu@1RE3GTgo3}Z6&TQlslvjUcg!TwWb z9KGMz4?Z%@nk4MY!9P25M-HXB6!K(^r$YY;elCfhu@>Hiw-#p3lGn+bF+No{sY!jy znxDPMQ+(kudo^M|y5!U5)P)hTH_v43(IkgbD^!fc87}hiTf|Ohv59B#okMJm{wodd zV}RXkf$OYs);5Smo9vIekMiKU@baB?C{ARLwRH~pi(8-2qs-qKN1A6_zZ-xJ+7Hko zr<4zDzLYcO^cqY}9C81jBM> zq_!~dW{GK?r!z}0aNr|hOYCRYuI0$jlH^(^JTH2oTAR@al}&Ikv?j2@azQqUOT*ko zKErdW7MGgYOVl`*sk?~Lc^<8e^!YCRn00phSxORukk%_mDC6!Mj05Rb3WyiSUXvVccAY2 z^fs|I_iuw-(U{#eIZe(m#7^!}3s1A(ay!%$I?Z0?*hBkY%qi`UN%DT{#A3_f7ah*Q z>ekul*2}-5zeUaR>z|^pe)tVek$fxiE#C2fd_0^f)@HeVz`3D6p4`Q{^VtW_qg4L@ z4nF!2k6+Te2FL3Pc_DGw5c|804cq+u4K@SLHa;WAKCKXw*gv>Lj3XB4Y;JWC<>zWk z&E?e=Npt4qjT`@p*Q?i<#(p?INWHWex=;3#_Q{b8oEhsc_JfIAr#OTEE|4+3*55G9Z=KW-jI1TEl*9HTLqTG9XGCP5KE+~;i(B}e}ZdPWj%)G`s7w> zdxRPxn3HwrKO{TR8TQl~lX{SA#EzTPYTKMa@6JVVmCMwaTb#uYYwOYNx4%XofAxLH z`8)jF82qKWC+Fcobii{tZ&-~BdqDR-eZuqGhm3C{Hx;jzn_csV`G{AoV*jj(TN~IwOWJyxIq~kj7sT$wc*Hg8R|MTR_EJBuPSrY}5qMF=81i$? zOPn_%Ue)6+=ojo0T;ZLJh3o}WXTX^)tISJrrjfXqIcbSIVLwpLypZR2UR{SZlHb2X zekayp?Zg~F?Hp@DYRUNw72ZqSRorp_e`lK*MXet-X7um&*U7iC7x&WFZ_$=Uhmrl? z249#`Lp&s=+Cz8ZHawO-_^dioawPR3a^KW;^?Y^VWHhkn;%m-S4gF@E#U6Q155J?% zQJS+a?^dj&Mcuqc4cz$_<|@v1)?ce>UBj1&F{b(1JQ}L%ZYAL(q}XHUv&b*C24laY zy>ZT+Q)gG(CqKBzpVcx<5tCY1&U22`kg>1Zo@(oIaqs}^k?y%1t~KgFRi43KLF@NT z&PRhdD@A{hPC>eX4GQx|wQz zb(lTk^U4FY7iN{&lw~jm`N(3A@~Xx3)G-PA1Kh3C-9utPVn}k+DrZz|GR`@i>(Zyt z*a17DPm%9cv&8($S!{uq$LE^s1?-LI5IbDxQxnEs8Y7vT*+*m!yk^XUuTpoa#r{sg z&iBBijU&Z$?N^a|QsxfH2kx6&n#&Wv+r#aQrtChtm|(B^swKY9{$_FHa5uDN+@mCM zaf>tZ_{V>Xs&JdkO%A}Tj+tpvoWdyv*Rzk*y2b#TAwG8#+~~{S{xkc8EfG({k9_;v zzeX2t%Ws79!QWf6w>RPw;@URPbo}5|&{B}6U!W$aMy7sN4K({_YwVYP+ddF;X=f!^ z-!(rJtFxXbrXr`ynS=H||FODBT>zax;#jp5_Q97**b4Qz7g`6@`iT2G@ZP93y;sWx+8kqy5ybKlAGju=5x*%OmiMR-!brcwb0HyLPrZ5w+auXhW=Rz->k0X z3j8cJ=HIJskwaRuBj)5e>_wN?P+}g9vAs5IjT~IO%9t>T-IW7iUMJ7l9K6Imb|#`4 zX!Birw&}s-oUh~OKKkZY>WXOYQr|te53h@QjWgD)FWH|f$HaaxV+^@(A%Bw-$y$gx z&JhzP$H!n!aAZ5@u^raunGJvANziJXa(0~uZ9JUBR@vWhNbHd3IgNkv*Z|}16o0Pa z8`KPNhI7C$$pzHOwMH&xZ5(AhVgG^`ypY$OGe9!b#@FPB_hbxAd$pzZ|DM198t%li@cU`|C-tw`zzpYM3ZA`2ZghP2NyuT0)78e)7N}*d7W9ZS zqjs4+2hK25gRl;kC8j6VE~kD3)=;39ktYri7hS|gr-;E^|DbWh`L!QW9+00CX2OH3 zi|N}VRi=MWoT$$Ch*24v+yAZpkenm2)G9nC?Nb7uqn3+#kbcx&N_iFfC3)Z0t?Kx3 z^-+w6?T71vRftX5&mk`?%KFMjtMfinFU;YqgAgXbw&t4v42l1zU_9)Et;0*M*pFMl>IIs2z z+LO54+re(YOQ2R=VxLm@^bC28Sfg5IYW2t=j^Tr?**$#oJG^pub6{Cne26o;hd7hk4Gwvn>1E zA$$AQcy4(->i;;qIZu2bPtn>$p0lLZo&BLj@?Lv-)DvC8?`pfs!~_HUsrB{&dnS)d zEZ~rO;vU@J9CmG!I$}P|J|w;;hpG{WIES?h#uEp}>d}vq;2nzCs51A?y|$mh*v{Dp zYGqxbf8q#@tuv2ag*$zc$AZ6dZtbnH2Bof{`GuT^1b0oI_Y&`;ev}+Wd)usom>0^q zTPDA;*C2zQlKjOb{Ou`xo9C%?n_r^a@QN?fgR=^bu|i*^ z{zz`OalktJtZnP#=Vwc3#8jtn28ek$UoHIK6r83*JzYQL+$MQ!*7?0oX4uLO?w>ht@kA6#zh_xy?nI-I8iO-mj?>j%!+E|i&(Rns%2rPktXxBUs z`VKK#ITQBlwTZLk`4>5N8Dhr@_AqD-;s5M=tC8oZi&G(9)%SX)JBd8 z>%=IGQRMNd{dR`DSdOi8f5l$Jx<~jc`#$f{r)w=E^sEuL+pC%eLoUIeHK(e8FRK-1 zOTWptWR0HwHDIEmb8q!h$GiouLI&KwIlQgV*PU1oLO%iD__t0 zg>x60XnBt~uktO-rJZkBhc_5zje5l2ID^`&+EVk;CV9TtRGBkw zPH){=8)Mx;eWsblVX$GR!BFj4$S|Wp4UeOHuZg)?6W+yq#r#Kpkv2&j$lNAIJnP)x zPz%RL*gqy8E5-WAKUl?g8Dr@$7T~M|eG0fob4~cH&LCnxBY>nFZLJY*(kaO-v{~KG~25bE4=YIj07F)EBmH#FGu?N0NY+&D% zvwExzeewbnwQbuoU^`Tke@(HA)X**#jqw`wy2j{qMV2kT34H`SPP-lB6%oKx<+#*?2zrx2Sh z24z3^3jWdA3hEZAP2Rzusuw2iDrX`NR_9r^4zN#8 zLSrj%c$|OI;LIEETI)(vzf}8ZLM`x+n(Y>K&rSAxg09IQ@?!uTLaf+gA2z`L z4ymW8k$CX%HF5GKe*Qsp|Hr?uw(xz3`&#&squVc|GHbcS-I~FU%5&*pFV*jHR*-eN z!0*66mspz-c5)9}*dgyK6DyhP&eo@)mT6vKetiw?Fz0B>_p;`E?g70%a1QpseeId= z!}~a(CVl_=e~Auw#su-+0_Uv6y;3izz%z>}tbiBjpXIUJKj>_DXLEdropDy|3O1t( zmN&LPkJ?0=c=zZ5cpPV5+bGw-`P*`y!u%@ypL{8?c;|K5n=L*ipTPR2eI|0xoTHXy z9dqC++dQ{^YYp2~V2#B$GsIuc7LW&%1y?$GFZySAH{&q#`Sva)Woh2Ih`&{fp+GL6{-nJg337^{UCn1L zp=+9Eo^gg4b^xEnT(HP~izmvzly|NMm%Sv;&65*lKW>FTI|taAed>_b_?aFyOrDSV zg1Nf9FW1o6CrK`_jD4wcALj8HauJPTXRu}ZDEq&S-7Y`DN7Dm3fLAO3(03Vt;Z4~e z=iNtkM@$A(uGm0R(>`PO@g~UWxU|Wp9|rViWD5 zE1`+zoN0TzwGrZL>I#@ws+sKhuaR>)N1)C*+rIk}|4kn-y4>ncJ0#0o5wj-xb*h zd+-`(sZ)TxkN6$!n)STWF8+>~MGjepJTk>PCWsYsykkzT_f_z1{V%;lMQUS3KF1mK zDLATe-fM}zz`*V1JIb6@`^3b5jl;s6WPHy8c2JvTZF?7=a0F+4hkSRreJ=DW9D_@z z(0)sf;VChT$Y*x`%{Ck%`}elt*cXYvtHjvmPHFsi89%wg9xbsh ze4pCub7*p#E41;chYzU7V#hXa<2#6}#IfbR_9WVS zdq4~*mO3K$l}ES#**oT=d=K{hB-{(<*RNq$K7IZR`HwS@;D2zwi{v}UpHuU}#u&3z z@gvS0v~T8!zJB9Rxr57aFABW7+B2>`uYRZv4EP#2p#34-E4e_%lS81N z{7w~nGNh)s&i!^4kUS1+J|)&bo!}IIp0Wm?z_alV*4XnZcF4MkSa^~6s6))T%f2-@ zBibEvdv(*)Db}u9AGJojM;stFyM_&IV*g!J=bokMq0Hh7?CaYG15md?P1fP%r}#l_ zru=XUhN8SE&bMjmg@Cd6{vxa}rzlzA-#^?VsmLymNs& zq>hrbMSKHKv`>E#7oX8u`gAjA~zeg9YRVQ_xF zM;(;FO@o6L=gh>&QRVzLnGfiF(jIT#cuKE0_$=6pJXjW^^VGuCP4z@?mfqj$C>fR#W za=w8a&Fwp{LLXLvJmk~oe}Mx7UJR~32S4e(>TbZY)w5H>$2Bx|@NNa|49=8#AlrAI z2aL{*O$Y=S0=NH#g zqg0Gf&6^f?R{b&S{$iJMs!KeNw$#|6EH``W9=;itrJu|y}rhI+4@z`PO^76Xm%v;9`z0JIfF`>0i>m>fZ z9AbNo)j}~(QcJ67{{nw!pOUjV66~>>NAkRj)cse%MC3h&JOVDAG0iGkgVuIh#E8}a z>TuBx;p<%lA9B9Ng!=RlTWRk?oE*3ldMc?8Pr<5)6PMt6rr<2wyXe}*sMS>9k*RrF z0hj3zuavMw3BG@>&#WUb4P$_YYr}WhPif9k;QpQ_?pov=pXkH#TasxuF0iucusN>&b2$PIV0BM^vyQ>b+S16OXaRY+e@nyjjBuHK7#!v!|+uyp0kz z`S3p47&kx1j-z`9z8Pvj+~t$H6S|c6%agEGhWB#s>?WF?(?G_?Ag_Rh#khnJ>(#gtI9(ff;p%m z?j4eUf9)|fA^cf5Bfb~?9@eT#oG*LNPJV~yh@viN0dJod|%h$ruucaKI>rIpsty^3)Vo)_0;h8o~~iTyWG7pIFz*|x!cx7=IfgwPAb9|kaKB&!31vc zHG96kcuUU%Ys1>jkL6y=DmZJXkV*mcbU&nqt5z`+R5^-TzlgT`>m(?aqRU1YwJwHWpn|(8^%t( zkL1RJ`x7HO@BZ+MSJ8{#|7&!KoF_Rxj4prmGJ5o<--0%vx|iqB60YpP&!FC5U+x07 z*;>DMHcbvtpnm1NW%cs=VDxHPd9UR(7>CH^5C@beV{B_(*1B?)nsc5U$R0*})O(!2 zI9xD)R$byOar9z)AD#^Tgw)Ec!7gL}%k05y?I8Lm;)iozzKkvqqny9@ikKXZ5qD^w zv!cGkh#Xdqv-5GZcNy&2^;dt24!oOS>~bcO@HNK7aP~CX17Td7hQ}_ySL{jr(S0%o zh_QDG?01v=SUf?$Z%wSt&kn>ai0iFeHpmUs9MVRr$z-gj53xtt8e@k%bIk9E`Ku$5 zqh4u0n|$;&u+Jf9u+F(R4(wo8?MbX)BkaMIhZFQQc|Y&U66;svcg4TVp{y^B>5=K; z3)SiuZ&v%y`iXs&a>;w}_2f;;1<-y4&a}1!`!8=wZvP^2+A99T`p5RI@5yaWYBVSP zo5V1zr9FXNILhh;ssZABi9CAh#^u^c`&H$bc-NgXX)VL|@finTn9d)QpKS~+ub|7i ztTQL4O|2ksgs`{fqG@8q?1XrU^DO_)*u*{yzaz}GeRVQkyUI zLE{7E$r}HQJ=WRJ9QHA0{{wb0U9B${uHo&i}?~Au<=bi6n4~;xP{gA#-?84YkJZ*(%wHH6bnbfv= zHjO!RtYMS5?k07zo!ehv8^HL7#w5fJz7OYHy*4>ta!W%$i}41zv3;0}V2D-xmwXZL zz#Q*s&C^o8oAiqn_jG1RdIYC^7(FBiyNPj~jh+1!2bCfJ?O*F?;@L>?`-Rt*yOOWprP zY_q(n6`o_B=a?m*Ghb`qJDWVeIEws<4)@j`e&>Mb3++EuW6AvN?2{kBL4PI}K|_Uj z#8@u$++#;iv!-GYYUeJAW3$)0*wQxpE}ztXC+Gg9sK+>C=J7B8ijD-B2KT1Sy;GN> zOwD=!-rMLBc1(`zCOMEZM&(*86Ytu0qF$of(#|muFJB@aaE_((ZO+4w%F*Y!f<2Ib ze*@m;jW6HQTlg^gjQ)mO&wdQLF6w9LC*;tm8!jdy$KJWd##VBn)F*fS?d{b*1g#0y zPfS=Xvi&=p9nRh&b9TxH#E;yO%k-mc;VaHR!d93cpCOOO{-roWYL(rl_I~9t923r- zSg7%9g1fXOUduhP4@qrTYmn-4o+4j~!wpZ6Lz=&e9f(_*dpKKg5f0!!eHz9V<}vct zwIj}8R@=>Z#a^c(xU{wD0^b`n`}llu3jIWrclEso#KvmCI6KGpRm;tKqWn~Om~tjP zPiiC1%e&?o_Q8Do{XKkV9lSG*-?Hz&%x5pLU+=f~uuaywv9ZMBF}U*TDmyE3o0y_a zp3o*nmdn%OjO2(%tl`LS5W`UirX4ub#Fv~ceWrRH>H%#~uW)X)d*OT)YhA|j&bM}U zi+X~q;ngqIx0%BmbLt1uoFlP%ZG#+s>zrlonQ=xJKW)E&Jp`kx^mklC z>kquMazvcuJOS29E#ei3^d88Q znZy32=o4CCKg6re<;1DgQMUIWk3F+q;9Zojunsq2gF1op+)CJsH1SrNI>ajeL{61l z26>g%T*O+-_(5x7cpKI;#z5U#!@xTvF#y%U_9mB8K z-`%1Ya_7M-YzJqJnn)R6;XPAR(td*v>)U*%`3bl?w#ohk<2bRrBr)Rq#LF`c=cZkb z-Ye~b*TX|X*CWeX%D+fsM-#*|+F*6b4#D`(!i~LxmRuJb=)0jFr&g!;z zU(U4npIq`bvCR(Jdd}2ZR#Oe!sfqnw1!J8BKd_!;oKs~z)k4@}&(C~G9|xFaj59G0 zhbN}48*3pyO}sizyr0kxYCEt|>Iyp_G{f1_2H1CS`^C@PbLwYcqH-hU)EfJ#MUb45 z_i!H9uA>zXcKh+OpEx5A@!#Z>tYMMQObm}hoyO<2ma+!V=iZy&116-7S&1`bU0oa1 z2N!W>hJ8ckobp@NsY_f$|L};rn+9j}E{};p{rNU{LXx;-j`+!#wMHzL<6L_0)RcGD z;Rd!_ZiU*adFmv$p1os!?OU{4KZ~~U&!0T~5f1DR#31M`!sG06=PrK!oU;kHkk7~v zJ3CuN{q0$L_{^7`U0`0OW|2Ri0zb=RUoPB-Kg=0b&*J9m-@+`FkLX=oBW}Hgrm?e( zo#C?uM$pAiTn1b0aNcje_%qmx91XBg&V!n3Vzt%;*%1 zk~*b2@g2A*6>=AGTIZF!nGZNxN!%6v;#h5&q3(F;E z)IL^YV3~83D2%@Df<4H9CpHhI0g3u`OR_O$nRlRH$yf3?B( z*EqWy)RERcMXQGAbB3HeSLZCsA+is|d6VY$4SbC?C3`r@4k_z)kufZdK`OYN^asSOd&vZwdZ z>1%O@^`Y7zxiqujRdMXyvT-kd>-~zlH0PoZxtpi)UB+EEzxzJC*Cw@xi(gSsLFdZ( z0`jm{z)|ESJ2O^Zz2FpQUf`>)a8{`>!orWeTdxQq7oJpJqc&%UYGPi{cW=Gj~&4p2i=o`kcM)ezK& z*vn)uam6!@ZI`>hg=XWWN3XCO)*tNsRnwYx;C{+SQD0px*$Taim#ID9B)1U@+#;Sj z`Wy{J-g(0L=zu$3_=>oQJ8ujtmTIj>Et4BBe@3I^8T|raY2f=Ge}#Vl*PifwO=3c8 z({g33x1RX|ZC*Ze%)U9-^61gK=n(#!=bij;^Db&WR5=ZTEHWtwt%TU|Pu)p@L*|U=* zHhjM@;q$@yjdREmV%%?ijkU8bHoe9fPf=fS9;NzD&Ul<9U!Uh}%R9Aq`}p&>)TO>5 z-k|T2bJ68&iT&y0+Qf6t7gwKV1Dnxd4b4sT+uo}%50iDbCf{Y==9ruy&U*(P5bSvm zjKcXhJ!+q74~M*roXI}n3O#_{1LO3d^TBhA16J{IN$k2hP(kxWoE01E>`?jB4SfDO z>%WH2*uD*ROFk!VCC@g2O%%_wzrlRQUa+9IPEKRpK87!s>uwKvl5<<*uIi^t*2vjM z?XX%mW#TCN;+Dw2(!_lsUc;uE7Z0yK#edkxfiI=M+?gFQ;ud@B;_$~u_Rs}c&1E$ zKl-P+bo3vV3eg{8g(%rR=6C6XWdEy|_`EA;|z@Ry+aqyHRcFz7`=d!Aat3H(4A#!t!G0i!g zL$d&;G}{B8;PJ!YOFT3YvCk&AGLw}|)oU1tgXvAE4$U}h3_{LYVmg#+W=6Pv}>5<_f+ zTEiW1_1Dqnqc?#|Khq+AW1XF`)}VU84gsotP-xSXZrT&}`- zW~`GJ#r5gj&oXw*-nK0`zDKO9wGO%alWPyDpP-k-jIEuU%=*P{jflIaH>p_?KgzjO z8?wOvUVi5|^yXgIs4`$#LtH&%~qXt&39>NCev`QRR$G?cxX|v4(YwY<#ZJRp=kA%HV zu`Xgx_V`%OwwK*`RWURr#iEPEzaKV^uy527(EB%Ma|WFD#&~i-@1A|qi{w&4tC6^G z7p!(0ZgiXH-)H~Me?iX1-WS;mqMxyafT^Or91ys@h@ z?bV|Y=d%_lKUvJ%x}+FX(AEHpu*Yj2&QFZ>w0}jp-ro}zeKKsv6J-; zduil9Ss$+Q9g2c<`S}@Y zte%xc`ZQ+P`v$r_&R^fg=c)&E_tlS~Zf@U4Va(5Bqvc)8WmNximEX1hVhnf0ce?;C zw*_YI`B9JY7%aX>JU6B#Ye=?tKfU;JEXxC&rzQ^dhmwN zz|X+{8FLrT+=Q#`!CVQ-~Pn&5^M7=>I!Va2k3Dw*YA7>R{U)g@1Z}4eNyA(KW6Kk0XPQW9|LS$ zpM0x^&1ezJsaX=VFTpF~)ZP|}8~WsGVqF>TsP%a5PMl|pgPmotDQVs{%zMX{X4y+Q zA~`rn_vmYS`s;t8w(smoVp!~x{@+~t{n9kV%l6b1vCna0yg6zi@((-4@Yu8L7@%^uOJEU`4^kJExIZgybJI_^GVh1}VF`P( z1TSfe`>1ZEnvFf~=KxMplA5X9FmXz?_UyG=C4Q@m*Kxn=+#!2N?AP1AOWz~4A~8Yn zIp@KxfeD>|^p>AhhswC=J~kF^EAJ$BGT@w)z+&^%5yYSR7nsd(2c8z6dHCQRni9-P zWxb5^>8kXpS6aaP{VN@ zKWm*|jC>!>aCLRl8}jSnO<=!A?jvXSfVg&_xI-OPb!xiSRJrfgc^2t4P7-IBKg%Nu z+S=@obJEPkon@CK_O_=f#(o*&RPjf~M_GLjd4PP38ve}Mk+pAYaAHBu1)P92XhVu{ zv*az;=^>fPG^yz@=ZKifo+@GT1#&sj`Htnx-vD9i-|8<$1b`E>6OulL!a)EQWf8}QM54jEY1nw7c#0=+R z5np#w3&KaU-gDH%R|1B^T5ykVy!l)7@vGmM`F1}#`}kMZjhQ&?=ZL)=ajxyT7B|Ua z<3`vFzdL~s$;n%ksTd_Sf0m z_AS|Sspjg=ZTdCf#HLsic_H$(Yn;;z+C*b|=!~N-l2_nn^ z-txc2e3$SKa?B3C_#tqo{$19AwgOK!qXw->>h<`93^ zV{>oW2?k4 z>Y5k%_aZ(q36A6ZIA^emIa@<;-iUQ~Ptp?=<Bviy|)>e8R;$F zdnZ5$NgxnN0)bprsk*wVtEXpm_pCK*%^!$!T@N!KSV%xdyzgVSx%a*A9b#5+jWWKg zW~|N{H?eER-fAob{RYmv`9SA1F%R<~HaX+=hB}|5&YI-bsV8!#u5Ks z_@)RLRhDzmB&Ty0l50A`_qM^ftm8D%3|b^t`N!Ni*fH_bj~koJJ%W3{eyo#g%=LG8 zUT`CPM;#j$&MxcL;%vzebPjnBUm-_$45l!?s8%>wDS5g)V0EwLPRWIvO{HbtU7oV*VBEA0 z&Z|#R!`YmreU5WO924e9a#z%P&(LR@CayEKwx7}&jdEbc_jce2bl`f4ebL+J+ z;{TJ6-cBD8JFesBk2W{))w|OhPk-WUFx#iJgYO{bkef2*Tyoc(g(WX1M$N;Sr$O`e z1h{6GypwvcvBPhQt8jaXf$$qO;=UH=I%thy-|W{u1xC|6ab@~`eIxY9IsYUDemc7K z9lhJ!G3={4qa*gM$v#HFHs3SMHbggsUEHp}NvvxZ52SxXg57{LoM zKezu@Z31~g>N1IW4AdCn+{q7>6Vc$Ve+u_(NW769QwstU4Y@N|fHf?2;OrkdhuxTM zZQ&2Vl=+Ufm^-nASpNCPZ>CS-&wlzXwgWq9Z0hU`xeyEB7uLtcx7GgYn6qPt)L^vV z{}eI7oo~ONeoAlnnS0NsG4P`n?_R^#6^!qxGgOGH&OCh0{Rj8w-T!N{$9rLqIL9Sw zOi^Mu`(qQ>2>)I@!@iqE{H}aexy|xAVqgl3thd@&YH4NofB8LEU;PT^^sn3-`b1cJ z=Nuhrvq$u@Go_y-aS(GV5O?#y%vL>hRpYtJ-u~;;t^ZvzW8_ewlsD#-=ZT3|T zdB*WoxGDID*{(KflXXNdhI&?)^V8?|5;h`DuI}t5<74gmB6?_Qf@X-v#o<1zFXMyJ z17ZIQ#^d@8`a%wgi|y@mrd5YpkU6LLpShRwm(+AifXQuhHnrtt&XV}E`Z6)j^2)_$ z%y9S$e1&_#zh8vo6dj%neLOedyA-kM>Je<;{T99pSiIZ|>h}|Rl$yKDFXCLZ56^R! zhuR{G6KHQ&hG(=UZqJ7O%<7Aci6zw|$+9*bd{3V^ zxdy&!oHWb*U!+gX8oKq|JZn-XUu^Jm#>i^hoTC1^LH~G>{Ot(OKS#_tKu=O_`!qES z`2zFiS@e>tgLNFPOAlMJ1E-||#u11A<{BjM!waKb@*wJ(oU=uA$w%M-%V5pc1l1PG z5;Gph-`Ed+{?SwRjh>uSm#4>yE7Omv8=O^mL}0T6_%P?b_>ue_Jtk^B=HCr$n7zMh zp~#0*8+`_hY#yIB$9}6DZ9Qqev&WuNUn38+?iT92U}R>Ifkw$I+9Wj<$2 z534w9kGm%SJ4%eE?x}r5a?C@Wj5}{!FW0=pU9tbJZ4AjCCh4oTc9{alvzD7A_Kbq} z=inqHv1fg1w&J#BdRygPjQGAb&lxyX+C?!RSk<)d?Vu?On1dY-jQ_6*2nT&71xtaOV!QoSJSXgm0jF2B#zcc?Y&V+YB@ zI9E%YgBHJwvu$Hzp8fjQ>Dxd3W%|_*Z>N9#kN;pE$un{@>Kg2O*_etmQ-iO0h)!1( ze~`j26v6AQle<>-9p$h`G3sK@JPET6h~oau1%voo|VaxQ`QJ#xS3ae^(~%QcEp^ z@00&w4~JM{hz+m}=^^v#z;CT@r-;ARm1yJpDsZ&bnzJ6$C&y@WCd}L93{RK?vQF%? zMNBDYXh2S~MXllPw}0gBsBg&}W8aaOO%0zcwpBcAbmca6IA%M6`KwW8tz`WwoCWNZ zeP=t=cy?}l9q@8zcJ=IAAQ#=?*CGAu8=S{ePv8yWA4b#@2H5abY9Srgtw#Q_$oI-0 zwT_}+RQI<{d=_RXvCnc{o7DK#@-DK*_KIgXBRPIXPEI~(>Ed@;E9bAOJ!0>IeYt_R zLj6i@4ez>qAo;QK{mmQXZD(YqQ_qC z67Ots4#pSYETdo7!e`r)z6A!cO8lTsj~d&1#2OQ7jBVCWyJlZV(tI=UP561@VYLe6 zzsaL;UWZ)BI(g3;n2I{0>g8C+Z4eLih!>m_+JXbN{n^`4A8T8uxcrRTC%xC?&FW}Q z@JoGaG3GAnTB>6wpLG`hyox{Gz0K@U@QS}lHPFJ}=6lFbiAmaEx?}9!1?sP(3+y@Z zN1XbkF^3r8@y;%`=MraI-T=Mttk3u&x_P}FVs~-?_RV#Tuy2Vav;z1{b!)f4E7dX`L+Ix6Fd@{s8+Z#7S@1nE7tSPCfwh!NB z864c6PVo$}`FV1cDEL@~HI?UReb%|v8`w)ajjY2#>dBx@%nbyGJ zjjz-evOh@e5b>tdJcArhd-~Ob5M#2(x33xBouhyu^ z`uroXJ9SNuQ6K)OvNHY0bU)OX27GoJo0G)e$)8mJXOCKX(3azDM%f?hxaK6sz}RQt zD=rXMj>ya7XvoF+8Sx+YI*ku)kawoZUCZ1%YmxR?x#waqUCxxX4{P&zY-Nl%GDS?- zLyx_QzgywX6|A8UzXl9TUX2(Re%X9T?x+4-T?=zwb;!&+)v1#2Bo-CwaP%+4=%=2C zf2uZ>xuslPad6+$JS*VE@VeB)Y=MK-PQi2L-xPUn`+h6Dhx&_YV)5C=Av!iYA@0h- zkBJkzsjD3Ro|wcORUMEe&bs=Z#sRDBSCzGqJGO-17&2q?`sXjEd1AN`af7_RDt5HN z->p&y$PqiXI0r*wj~4G)T0hOK0^W~v-T`0FQqL5xb0*0mTp&3w&cZYnS^~ct6JMz> zWUVg6Ou?i+f}c%b&ok64#30qM3Uw=T8TsQmeFuH)ex|+ia&oQBH^CItlxS0D9N|AU zs4?4HvIMp{#`f%hji`TP{G%?e8XWrDCb{_96*v$0nG&&!wf=mFi|lbA?!!N+b)E&c zn7{#2OR|f9$bdzOeTCWq=ft{EZI@gQTiC}2IuB=+97bC;WUq&Oui88nY)}VVs(%rC zC=(-9$!nIW**FVWO_mYoO5b~dd)3&Z7Y>X||8cCcjD6eUyPOqBY-{X|pDU~St54lQJ_#^hbIOn2vidr~lz&WvUrS;+FN9Kd##`4s}+vKU3 z1Is(Ju394YA8@lrV zFG{fnVu44i6Y5m*->J#o{bqXas~^Zu;Oi1g{zGoe*&{x}UmBZVCjU}v-(IUE_eOqh z=h7D;hP5B|>Jaxk@fvS#lNfv>7$M|c0wLK&$(TJA5);8 zPn<+f(fKc_i@JNOr^{O$s&Hg8FNx6e-@Tcr&Hf9=PKYd5@2=zSdAy{QEbM&zpgUE-m9-@wpxsRH3 z&d8d9*St8SKMMbo!JkyALFU27?Xj|EltoWn9X;z?;$4f&=!Y?Pw!qxlGI!Fs^lEBY zr!(&9V4Iyu+UETB$=h1sOV(DjJ4N##_E{cci#sLG5dqJ3FXO}>NjS&$WU7f~pMAjh zIOF9#zLWD*1she%A&>tsW>mw#TAc6inXunR&a8Ou0_Q42zS}=7Uj3Xrp7@bGX7>(v zAB^Y3C$E^{ChrwY$~+%FT?O6WW1W3^Tdz!SJpUcOi2eX(P=y)koKb6tG3;#_j?VVo z*CFn*&uRf|$X;D}y7mX!pLCL5s`JlZhdju>wI=cWnMXgu_2*uYqo`4D9k6U1N(|a3 z{#L`>o@IMtd;Gt1ht(tZJ&oDzo#|k=oMAe^{@4d=Jt|87Spw{C>-KA&4g8sSN?o%K z{~h!w!CdSMG5>LXi1paB=pw1pX|HlqT$8hDJRatgaHr$M4eGG>@gM8NI)`B3ZE(UG zzNCT;DA7~1e1W_e-1zjTPdPjI7xP!*fH9i7i`>%>uun!c(5UBU)6}x+tmCQ}GI)@hQRZagwb#CS&3?m$C1)&fZ|o0{Pm#oiI#Vr;4~r5< zED-z3Uktrw+||2p{|z2Dd};jTHgUXlYwMxTi|`qTt>G$5vK37Kz?m73#x#S&w zPE9I#aS3cm3O}?D590EZp90Q0*W>%Jan?TN#aX*5iO*t}hvY7oz%A4&8^I$ub?*gv zHGPmbo(C@6u?~1AXRF8E*n;~}#3sHEpIv>EP~+e}S*NuRTOF1zahrB)?-3g6Xu9v> zQx`u%GcJoNCs)0RCeS&MH1a zy(4SR+xXgUz?N7?J~M+q$b&0oiM7-?(LaZE=KEvdu=!Ou!JM@UcB8DF#5RiEb-{zq z!kY`a`}hs}<+6O1b41gepIPi?0{dqT(fnhReD2`Z=hK5ybr#Qy#g1X za8K1(xPm^wCGK*cxLW;~1JpW}Nn)ZOJ^1@1PQTLt1;aisydUK@K_Mn6sLSZ!Q& zN!0MS7G7a5+wd&Z2oVz!7buX!IA2~}kwtVY=9~NEPxSZ^k0zEblb?JOba~Xl@$OiI zI=q3-!ei!pfJvxPRAV+)$PdV6mpE&e;3>73Ew@A+%AV8;v6`9y#w225a;xo|8ZZmA zgRhxfd@;R(MyIw$J(xCmWqO6r#viC%*5zKRH&#F3%<-(|HR3eC>HCQs1v)!*l$c_@;KyKJf;%sS!BgIyDb5 zWH~WM$J{l3X)o;G+Nbs^ei#6;uF1-WqSM7J4s-_lANc4XN1pvw0M z^B(5la2@CV9&a7M`KJel=dj;3MQujRFG=1OvmVc9mWfr)V7FGNn@+Cd=fLspr(Y+Q zx7WcwdO5z`8y^~@*f(g;Z0PyoyPOfI-a?H#Vb4So z9LOHisD71wUnIT{z69GFBYsJ7Z>&K%kFm`eRG(%+9DrvMH?sCVhsL`4FKYUzr*ZMw z@944SuCagBO|Us~$}VTe+&K;gYCXg{wVE08;>w%}V=AA^d5`KN8Hea^okgi;W$35E z{!YMIPjj}Huygt!b?ek&w!UiZNzRb=%3Rf&mVZA4%N&s_uHSfpji$DXUtJ_db&iUd zM3kI)ReT!TJfTnL`pch~yG{(kGmLMb`$CWCg->5kx4?Gl{ERvQ+vJKZVoc{Umo3X7(vAw3+ct%;C&4=k&!_tw~V#1DEK6 zVaZp>Q{%KBA*HsKH3!~L?u)sU{9^kr&QJ@Oa2|_bOey?OpYz|wwpZ~*E7$<%K@BfZ zqu~zig1PR&kJQf(umPU`ThD&LuEEW?Os$Ff#Tve03qQTjuQ7gQ1s~Jp`R1qzs~uv! zGCn>@jO|?j-#~|kYGRdYRTV_KdYW^^WgK)Q#QOr9!;#;<$dKU%8$36lx9Xs zmiy~$A$6Ej_~#u02zU4x zb%6qBMUGOPeXenDozYu1P9RpdXKqXnWuCal+R8lGU5?nL$k{96=bTM(>cNYUgS6p$ z9>M;{z=`MaZ$~>j@Zff+-QpAAWEIJElf=hK?r@pAAWpvsb`&%>xyNd$$_00=&8g+; zonoF~Y;=Bl{rOMiq+m_NJZa8ThP!F6nHoXj*-Q9>0a)q!1GL-0SuTA6XN$We|3$36 zL(H&>W^{@5vnIXAeX-BU7-;`7TJP2|Id9JGbFJMUwPkAfj{?0-a_Nlg(%enCa8Y9H zF<7p3eX;r(Y?FAEy(IQ!I@7X(PUhh1PHEJs2efH4~;RkMDcdmcM z?A9;d1YJMpm~N1xc-Jq0eL9D1fbHx8Ume*!~hI46ZoEhJB z4lGHnO6}n#a5sCT6fL+3Fa3sYWVPgxWm?ove?84YbWQjK)p)t@jkjS71pT+E+J>-3is-jod^0JSX1}+|znOfitX+ zwjUsC%*S0f=M#tXykxnTX+Ag1i4e=<&(uJ1-^zT3J;rf9BPo7N-J^h?t`hItGw|*g z`W@uO=9M|(i8TLh|7>ar?I!O2hRcJMVa&H$?ByEvY|Axd&C~(*?wtLMK0o@hG~&JyXX-t%w15h4Wyv2}jA3BIqmI zj}x@f4~Ylacl*Y+ZoZ-xML#r{#ay4*?XO~kUqisJB)TKFvc zZ{!@u;jD{UG>J9T(|e~=aCy2*e5u|^n{~-iN?$dR0%?ksTQ;(6kh0nhgNo1egXsZkPh*t70_v{_TNGAQ9C#Z zpCo9?5MPT)s`(>#O#PezS`BJ8Hd)sZ_WJA>KZpFpxfS+v?BAmg5_@Rx>IU(}E;WuF zVwN3zk9d}x0qbb?t*eu#y;A2P3ts2UPHpkl4Q-`&3;YB-=B(5RcTbzH=C{~YpS2j^ z_j{aOxvl!V8h%54!T~-*jl~-NdhZi(AnF?pY}AlF9`WzD@!h-ko`=5D9vD%Hd{Lc& zDmm!(18U&-#UgQiieKup$zQ4wKgz)qKd^@H%xUYH)(8^Z0c~-VcXMutIx5cK`iQ%0 z{%&umIEP$e{hhjKCm)~*LoQV3eUo4i3-~)VM~q3$b=BT#Vn0{#ZE8@Kh~M6?l9z&G zSZ}u1U(QBMObf_)2zhvtIKg_YwO8k3EMhC>s9#yf zH)mB3(OD_O6>{85Fs{6S z=jU1E=acyS40cvbzs#EX%-&vSd+C5>tRd0hy0{IIm9+G@(z17!KVy}{j6zM*+=V-1APm>#4yxF z7h6!frNsJL^RgaguD6K2%YxZe@!Li60(qD6*`0^0E|A(z;)wbQX9ws{v~yzL#<})s z1iY4KN)snqlk@M4J;kn_rR4mA0&CIcygF+}E$=KiROrDYu5`hQBCnHac*enp-733-C?i!)w^)HM8k?ea5XFfa?^8Tp6u zw(6W?F_jp(Lk` zyoD%t&6!h0_#a|O@0B))iP$%uJ?O)6UgE3pF~G{rL5!g?aLeu6QDfG+bP9j#3=sD+ zoI~Ej+G3RNnW6TtZ(j;^?+4&h_~`I`&S#)Ef&EG27p$Y)c=anY7@zabd^X>eBBuX1 z*F$f5lXoRI#_o&R*q<*?YZp7}jMO3bt4(}y9js!FwYPSdq95qgmp_L*Js+rdqK^=kHVr(nF%U&6^t?j8a4wm0lW-Y`@ z#f#^`-Xh@m)*9mAE!M~u@g>$7?Za;1+aj!cmY)|7Q`@*kJ`?6NbHDmL^ZCawr?39{ zAJdb!o`#xVlNi56e5+o30xVu0!*OinJTb@|*rD@NKP+!xU*F}ib?X0W*wu)U)b4Yi z21~^Wrb~LNN#X@S@Zr)$c8E#=YO_JH@il^{=;0c(`g zuu5(Iolf2LsdH;Luxs|IXE<}}-pP|*99^7#K%V?wbu;*_IDK|W{ya|}>a4bqmlJK%YMy+XUWm%UV)o{U6nr~#xKXAOs{}FIyG{EHftl6Y`*1epa^R; z$ND6BFY|r-8xzD7#t~V3>LIny12j$5Mov*bU*PUm@gLh@qvC@Na$0+^%ste>a4zTF zmw%XE{EWQs$q(2Wc=Y%R=OOOiRTJP_xTfH9Hy#FE-#g#`g_*n5#=xjO+XwKdZu9fj zOfEe7F7Omb+?CaPa06fd0teGAN3yD!&miS=B+uHF3v{8m2Am+U{!OfI`~=Uej2 zhkV9WxbD~*)@@*uSJ+Yz&)_ zA|B9&$*bvbA1dsj80FFC!Surx^+V#REpXo!cd;lo#CNHg;+$pi{|dOokTr=eq5r7X z8$8WC@u9psxu4oqXU>n{YMsWmo+H0I0X{rSE@9uceP!yX?cR9>_uy^l$�*uGO7y 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

pLGFR0awYpW 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

70@)MmotS2{+4gw!t~G=R0WdbEej* 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� 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

rNk;_9n3{OtIdqp#YQmmN{)u~Ej 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 literal 0 HcmV?d00001 diff --git a/test/LWOFiles/LWO2/hierarchy.lwo b/test/LWOFiles/LWO2/hierarchy.lwo new file mode 100644 index 0000000000000000000000000000000000000000..acd06840f5098df7c9bf93d3298f9b70d5f664d7 GIT binary patch literal 13388 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 literal 0 HcmV?d00001 diff --git a/test/LWOFiles/LWO2/shader_test/CellShader.lwo b/test/LWOFiles/LWO2/shader_test/CellShader.lwo new file mode 100644 index 0000000000000000000000000000000000000000..41250498ef81f0100faa5a662e029604216e5a60 GIT binary patch literal 806 zcmZ8fy^a$x7#wFeKbN27L6!#jJk|#+C z61)jD5)EPO#L|*oO*|fdGyc3zsZ9+;535W4WS*W`07>yFTdh$nuNLdoXH@BHL-j6k z^vq=L>bKj|{lfPC?PmPvcH?GEKK}LNXQ&DM*#l~a`eWX#@q8cuUuN*SrDjdw$C;tt z>CGC)vrNBY%)QX#aqUc3?wnuBG@l?QQ)nUbEJmBNm}sLzHKyJo>-yEmk1=_dTAO1J zC+K6~*$^YnVq%1ZYD~RPcE_&{I1b5%921OYyd3WQG}o284c7y>6R(bNJ++Ar(ItAs z3DGA8K=9ggQ&Lg>ZSglE_Pr~56}^gHMX#b)(W?%gzv15i_zsfs^xO9Upm<)E=!|ce zj;zuz@z_oagZ>RBl4h>Y@?3Hx>GWN`T-lF{56f%dVq&c8J^CuTu-J&vb3Bqt=l%pP z4Dv?Th+VSSdFqmcHh*FzLf2cd<^nytzP?(#Uqak>dLc&Yh9>o-G0RPX-fp-1?I5)- V4rvARAv1I7cgeZ0+b!1u`~&davETpz literal 0 HcmV?d00001 diff --git a/test/LWOFiles/LWO2/shader_test/SuperCellShader.lwo b/test/LWOFiles/LWO2/shader_test/SuperCellShader.lwo new file mode 100644 index 0000000000000000000000000000000000000000..9780dce1040c5970fec256306df7fdb0e5feca36 GIT binary patch literal 926 zcmZ8fyROqf6r7En$IS~w1ri0{K&WHTv#U~&oqT)+Z zf|UCkRMbdRVa_H-CW*#p&g_}9$GeVAmIBU~WNhw_{6{%}ZuBmgFA+^=ljZya690Kd z^%imR8|snNZ?`uO3)?&EjrV80k*v(UU%Ts~rr;0nQaje4@^X#khxY&VEWEN*t||Cw z&!S%Ra*gmHFwfZLb}{2=?a(Cho}Xer9Ka=0sKBwzMU|OLR8gbqQm>HJ?W$v=OJ1i| zWo+OKO|&d)qr=Q4I_Oe$sW-`P*wq$eo2<>)MQ6y%;m!|2lgMqz4B$?@Izncu5;dYu zG>9{zNwk2%n_pxx6=nYwJ{{sPyP{XotLRnqDtZ;Y>fliyi?0E&6Lh`v?>`Cv(c?Hq z&0DcMg2X(<*Ze%n&|G1l{eW|-_(F&HoQz-P%d6=koX+#NlQ+|a800M=UXQWA+g(d8 z@yO*(|K*~2yi?Y0gnRD^i7Tmuvc1UrYkrSbqDEfyyBuV>oSE}Yn<&RdXJ&+Z zIx(R=IqT3bObS;z>3rnNjG8uk(n@Q(Ug|u%L?d4=W|P-bXt|#!I@4)M)9Ij;g;|8g ce!u@M(5Z=z-6Hmf9%f^^OUQj?x6o+dFUe}uh5!Hn literal 0 HcmV?d00001 diff --git a/test/LWOFiles/LWO2/shader_test/fastFresnel.lwo b/test/LWOFiles/LWO2/shader_test/fastFresnel.lwo new file mode 100644 index 0000000000000000000000000000000000000000..a462c6ecdde3d9ffbf56fbdd05078a8250f5f21c GIT binary patch literal 864 zcmZ8fyKWOf6g}fzKjIfC6-X3(1EQca`|x7O?j38^i33HDg`5V9B8j^c`Hi^bOI(5k zf08;9l{qu(5sPIQlA(NH}m z4xXvZZ2orpw3^sHzu%1h+;8lt&PNZwe)}BH-@c%>&p+h#9LKBj|JC$fJ5|r|{II6a zw|YIt@;KJ#Ec49wc$hoYx!vb&7A0eZWC{%gj)iD)6cSCesD{)VWNkMaxEPYRsWllp zI6@aa$NCs>6cPgrsfN_MWKY~|kFihIXB=WM<>heY*NM*UZP*^bm3Vc8?Wsw$h&It7 zj)*SN1H899H5nD<-Uhz`QT49qRrD%)6}^gHMX#zn>W%*!0N25AH2Lw<14!Rz8Cs(| zR!5xc6I_&&)S!EZu|zTZRN1K{nB?=%+2Z;pyINjkIv)BF5#j~*~ z?XH9GqSF!^F?xoVlIz6n-Q~z9T_Ch>DQA&AE1}Jul@g)rLP~RnPPx9iTzpwV>bT-UCaXaW8LoaD9J literal 0 HcmV?d00001 diff --git a/test/LWOFiles/LWO2/shader_test/realFresnel.lwo b/test/LWOFiles/LWO2/shader_test/realFresnel.lwo new file mode 100644 index 0000000000000000000000000000000000000000..eb57908b53c6f7fb98e2f36323a4338c0465d249 GIT binary patch literal 820 zcmZ8fyN=U96g?9=kIf521=1FL0M&}#_z|;!eJ2`cH$VZ3khdYCSV%{)zp*L#l9V99 zpHL%Fg>xrs$;8(2oH=vPePohbR|3J4VrkD7@$(A6H2avWH^}O%)n@$#Mf}E5eLx&N zb6IHoZg>B1uzPg7jsD(lb=T(6@1MV#n1(+)rFIv8%-b=ZAJYGqv+?RtJEq~sIh%OZ z+cCM{)W b`~4q - @@ -49,7 +49,7 @@ -