Merge branch 'master' into rbsheth_hunter_rapidjson

pull/3382/head
Rahul Sheth 2020-09-03 09:51:32 -04:00 committed by GitHub
commit 78b30d1752
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 110 additions and 94 deletions

View File

@ -141,7 +141,10 @@ void FBXImporter::SetupProperties(const Importer *pImp) {
// ------------------------------------------------------------------------------------------------ // ------------------------------------------------------------------------------------------------
// Imports the given file into the given scene structure. // Imports the given file into the given scene structure.
void FBXImporter::InternReadFile(const std::string &pFile, aiScene *pScene, IOSystem *pIOHandler) { void FBXImporter::InternReadFile(const std::string &pFile, aiScene *pScene, IOSystem *pIOHandler) {
std::unique_ptr<IOStream> stream(pIOHandler->Open(pFile, "rb")); auto streamCloser = [&](IOStream *pStream) {
pIOHandler->Close(pStream);
};
std::unique_ptr<IOStream, decltype(streamCloser)> stream(pIOHandler->Open(pFile, "rb"), streamCloser);
if (!stream) { if (!stream) {
ThrowException("Could not open file for reading"); ThrowException("Could not open file for reading");
} }

View File

@ -107,7 +107,10 @@ const aiImporterDesc *ObjFileImporter::GetInfo() const {
void ObjFileImporter::InternReadFile(const std::string &file, aiScene *pScene, IOSystem *pIOHandler) { void ObjFileImporter::InternReadFile(const std::string &file, aiScene *pScene, IOSystem *pIOHandler) {
// Read file into memory // Read file into memory
static const std::string mode = "rb"; static const std::string mode = "rb";
std::unique_ptr<IOStream> fileStream(pIOHandler->Open(file, mode)); auto streamCloser = [&](IOStream *pStream) {
pIOHandler->Close(pStream);
};
std::unique_ptr<IOStream, decltype(streamCloser)> fileStream(pIOHandler->Open(file, mode), streamCloser);
if (!fileStream.get()) { if (!fileStream.get()) {
throw DeadlyImportError("Failed to open file " + file + "."); throw DeadlyImportError("Failed to open file " + file + ".");
} }

View File

@ -38,6 +38,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
---------------------------------------------------------------------- ----------------------------------------------------------------------
*/ */
#ifndef ASSIMP_BUILD_NO_GLTF_IMPORTER
#include "AssetLib/glTF/glTFCommon.h" #include "AssetLib/glTF/glTFCommon.h"
namespace glTFCommon { namespace glTFCommon {
@ -187,3 +189,5 @@ bool ParseDataURI(const char *const_uri, size_t uriLen, DataURI &out) {
} // namespace Util } // namespace Util
} // namespace glTFCommon } // namespace glTFCommon
#endif

View File

@ -56,109 +56,115 @@ package jassimp;
* regardless which 3D tool they're using. * regardless which 3D tool they're using.
*/ */
public enum AiTextureType { public enum AiTextureType {
/** /** Dummy value.
* The texture is combined with the result of the diffuse *
* No texture, but the value to be used as 'texture semantic'
* (#aiMaterialProperty::mSemantic) for all material properties
* *not* related to textures.
*/
NONE(0),
/** LEGACY API MATERIALS
* Legacy refers to materials which
* Were originally implemented in the specifications around 2000.
* These must never be removed, as most engines support them.
*/
/** The texture is combined with the result of the diffuse
* lighting equation. * lighting equation.
*/ */
DIFFUSE(0x1), DIFFUSE(1),
/** The texture is combined with the result of the specular
/**
* The texture is combined with the result of the specular
* lighting equation. * lighting equation.
*/ */
SPECULAR(0x2), SPECULAR(2),
/** The texture is combined with the result of the ambient
/**
* The texture is combined with the result of the ambient
* lighting equation. * lighting equation.
*/ */
AMBIENT(0x3), AMBIENT(3),
/** The texture is added to the result of the lighting
/**
* The texture is added to the result of the lighting
* calculation. It isn't influenced by incoming light. * calculation. It isn't influenced by incoming light.
*/ */
EMISSIVE(0x4), EMISSIVE(4),
/** The texture is a height map.
/**
* The texture is a height map.<p>
* *
* By convention, higher gray-scale values stand for * By convention, higher gray-scale values stand for
* higher elevations from the base height. * higher elevations from the base height.
*/ */
HEIGHT(0x5), HEIGHT(5),
/** The texture is a (tangent space) normal-map.
/**
* The texture is a (tangent space) normal-map.<p>
* *
* Again, there are several conventions for tangent-space * Again, there are several conventions for tangent-space
* normal maps. Assimp does (intentionally) not distinguish here. * normal maps. Assimp does (intentionally) not
* distinguish here.
*/ */
NORMALS(0x6), NORMALS(6),
/** The texture defines the glossiness of the material.
/**
* The texture defines the glossiness of the material.<p>
* *
* The glossiness is in fact the exponent of the specular * The glossiness is in fact the exponent of the specular
* (phong) lighting equation. Usually there is a conversion * (phong) lighting equation. Usually there is a conversion
* function defined to map the linear color values in the * function defined to map the linear color values in the
* texture to a suitable exponent. Have fun. * texture to a suitable exponent. Have fun.
*/ */
SHININESS(0x7), SHININESS(7),
/** The texture defines per-pixel opacity.
/**
* The texture defines per-pixel opacity.<p>
* *
* Usually 'white' means opaque and 'black' means * Usually 'white' means opaque and 'black' means
* 'transparency'. Or quite the opposite. Have fun. * 'transparency'. Or quite the opposite. Have fun.
*/ */
OPACITY(0x8), OPACITY(8),
/** Displacement texture
/**
* Displacement texture.<p>
* *
* The exact purpose and format is application-dependent. * The exact purpose and format is application-dependent.
* Higher color values stand for higher vertex displacements. * Higher color values stand for higher vertex displacements.
*/ */
DISPLACEMENT(0x9), DISPLACEMENT(9),
/** Lightmap texture (aka Ambient Occlusion)
/**
* Lightmap texture (aka Ambient Occlusion).<p>
* *
* Both 'Lightmaps' and dedicated 'ambient occlusion maps' are * Both 'Lightmaps' and dedicated 'ambient occlusion maps' are
* covered by this material property. The texture contains a * covered by this material property. The texture contains a
* scaling value for the final color value of a pixel. Its * scaling value for the final color value of a pixel. Its
* intensity is not affected by incoming light. * intensity is not affected by incoming light.
*/ */
LIGHTMAP(0xA), LIGHTMAP(10),
/** Reflection texture
/**
* Reflection texture.<p>
* *
* Contains the color of a perfect mirror reflection. * Contains the color of a perfect mirror reflection.
* Rarely used, almost never for real-time applications. * Rarely used, almost never for real-time applications.
*/ */
REFLECTION(0xB), REFLECTION(11),
/** PBR Materials
* PBR definitions from maya and other modelling packages now use this standard.
* This was originally introduced around 2012.
* Support for this is in game engines like Godot, Unreal or Unity3D.
* Modelling packages which use this are very common now.
*/
/** BASE_COLOR(12),
* Unknown texture.<p> NORMAL_CAMERA(13),
EMISSION_COLOR(14),
METALNESS(15),
DIFFUSE_ROUGHNESS(16),
AMBIENT_OCCLUSION(17),
/** Unknown texture
* *
* A texture reference that does not match any of the definitions * A texture reference that does not match any of the definitions
* above is considered to be 'unknown'. It is still imported, * above is considered to be 'unknown'. It is still imported,
* but is excluded from any further postprocessing. * but is excluded from any further post-processing.
*/ */
UNKNOWN(0xC); UNKNOWN(18);
/** /**