Merge branch 'master' into topic/fragmented_embedded_textures
commit
627cb93b0b
|
@ -1225,6 +1225,16 @@ aiLight* BlenderImporter::ConvertLight(const Scene& /*in*/, const Object* obj, c
|
||||||
case Lamp::Type_Local:
|
case Lamp::Type_Local:
|
||||||
out->mType = aiLightSource_POINT;
|
out->mType = aiLightSource_POINT;
|
||||||
break;
|
break;
|
||||||
|
case Lamp::Type_Spot:
|
||||||
|
out->mType = aiLightSource_SPOT;
|
||||||
|
|
||||||
|
// blender orients directional lights as facing toward -z
|
||||||
|
out->mDirection = aiVector3D(0.f, 0.f, -1.f);
|
||||||
|
out->mUp = aiVector3D(0.f, 1.f, 0.f);
|
||||||
|
|
||||||
|
out->mAngleInnerCone = lamp->spotsize * (1.0f - lamp->spotblend);
|
||||||
|
out->mAngleOuterCone = lamp->spotsize;
|
||||||
|
break;
|
||||||
case Lamp::Type_Sun:
|
case Lamp::Type_Sun:
|
||||||
out->mType = aiLightSource_DIRECTIONAL;
|
out->mType = aiLightSource_DIRECTIONAL;
|
||||||
|
|
||||||
|
@ -1255,6 +1265,23 @@ aiLight* BlenderImporter::ConvertLight(const Scene& /*in*/, const Object* obj, c
|
||||||
out->mColorAmbient = aiColor3D(lamp->r, lamp->g, lamp->b) * lamp->energy;
|
out->mColorAmbient = aiColor3D(lamp->r, lamp->g, lamp->b) * lamp->energy;
|
||||||
out->mColorSpecular = aiColor3D(lamp->r, lamp->g, lamp->b) * lamp->energy;
|
out->mColorSpecular = aiColor3D(lamp->r, lamp->g, lamp->b) * lamp->energy;
|
||||||
out->mColorDiffuse = aiColor3D(lamp->r, lamp->g, lamp->b) * lamp->energy;
|
out->mColorDiffuse = aiColor3D(lamp->r, lamp->g, lamp->b) * lamp->energy;
|
||||||
|
|
||||||
|
// If default values are supplied, compute the coefficients from light's max distance
|
||||||
|
// Read this: https://imdoingitwrong.wordpress.com/2011/01/31/light-attenuation/
|
||||||
|
//
|
||||||
|
if (lamp->constant_coefficient == 1.0f && lamp->linear_coefficient == 0.0f && lamp->quadratic_coefficient == 0.0f && lamp->dist > 0.0f)
|
||||||
|
{
|
||||||
|
out->mAttenuationConstant = 1.0f;
|
||||||
|
out->mAttenuationLinear = 2.0f / lamp->dist;
|
||||||
|
out->mAttenuationQuadratic = 1.0f / (lamp->dist * lamp->dist);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
out->mAttenuationConstant = lamp->constant_coefficient;
|
||||||
|
out->mAttenuationLinear = lamp->linear_coefficient;
|
||||||
|
out->mAttenuationQuadratic = lamp->quadratic_coefficient;
|
||||||
|
}
|
||||||
|
|
||||||
return out.release();
|
return out.release();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -211,9 +211,12 @@ template <> void Structure :: Convert<Lamp> (
|
||||||
ReadField<ErrorPolicy_Warn>(dest.b,"b",db);
|
ReadField<ErrorPolicy_Warn>(dest.b,"b",db);
|
||||||
ReadField<ErrorPolicy_Warn>(dest.k,"k",db);
|
ReadField<ErrorPolicy_Warn>(dest.k,"k",db);
|
||||||
ReadField<ErrorPolicy_Igno>(dest.energy,"energy",db);
|
ReadField<ErrorPolicy_Igno>(dest.energy,"energy",db);
|
||||||
ReadField<ErrorPolicy_Igno>(dest.dist,"dist",db);
|
ReadField<ErrorPolicy_Warn>(dest.dist,"dist",db);
|
||||||
ReadField<ErrorPolicy_Igno>(dest.spotsize,"spotsize",db);
|
ReadField<ErrorPolicy_Igno>(dest.spotsize,"spotsize",db);
|
||||||
ReadField<ErrorPolicy_Igno>(dest.spotblend,"spotblend",db);
|
ReadField<ErrorPolicy_Igno>(dest.spotblend,"spotblend",db);
|
||||||
|
ReadField<ErrorPolicy_Warn>(dest.constant_coefficient, "coeff_const", db);
|
||||||
|
ReadField<ErrorPolicy_Warn>(dest.linear_coefficient, "coeff_lin", db);
|
||||||
|
ReadField<ErrorPolicy_Warn>(dest.quadratic_coefficient, "coeff_quad", db);
|
||||||
ReadField<ErrorPolicy_Igno>(dest.att1,"att1",db);
|
ReadField<ErrorPolicy_Igno>(dest.att1,"att1",db);
|
||||||
ReadField<ErrorPolicy_Igno>(dest.att2,"att2",db);
|
ReadField<ErrorPolicy_Igno>(dest.att2,"att2",db);
|
||||||
ReadField<ErrorPolicy_Igno>(temp,"falloff_type",db);
|
ReadField<ErrorPolicy_Igno>(temp,"falloff_type",db);
|
||||||
|
|
|
@ -538,6 +538,10 @@ struct Lamp : ElemBase {
|
||||||
float energy, dist, spotsize, spotblend;
|
float energy, dist, spotsize, spotblend;
|
||||||
//float haint;
|
//float haint;
|
||||||
|
|
||||||
|
float constant_coefficient;
|
||||||
|
float linear_coefficient;
|
||||||
|
float quadratic_coefficient;
|
||||||
|
|
||||||
float att1, att2;
|
float att1, att2;
|
||||||
//struct CurveMapping *curfalloff;
|
//struct CurveMapping *curfalloff;
|
||||||
FalloffType falloff_type;
|
FalloffType falloff_type;
|
||||||
|
|
|
@ -1077,7 +1077,9 @@ if( MSVC )
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (${CMAKE_SYSTEM_NAME} MATCHES "WindowsStore")
|
if (${CMAKE_SYSTEM_NAME} MATCHES "WindowsStore")
|
||||||
set(WindowsStore TRUE)
|
target_compile_definitions(assimp PUBLIC WindowsStore)
|
||||||
|
TARGET_LINK_LIBRARIES(assimp advapi32)
|
||||||
|
#set(WindowsStore TRUE)
|
||||||
endif()
|
endif()
|
||||||
SET_TARGET_PROPERTIES( assimp PROPERTIES
|
SET_TARGET_PROPERTIES( assimp PROPERTIES
|
||||||
VERSION ${ASSIMP_VERSION}
|
VERSION ${ASSIMP_VERSION}
|
||||||
|
@ -1138,6 +1140,16 @@ if (ASSIMP_ANDROID_JNIIOSYSTEM)
|
||||||
ENDIF(ASSIMP_ANDROID_JNIIOSYSTEM)
|
ENDIF(ASSIMP_ANDROID_JNIIOSYSTEM)
|
||||||
|
|
||||||
if(MSVC AND ASSIMP_INSTALL_PDB)
|
if(MSVC AND ASSIMP_INSTALL_PDB)
|
||||||
|
# When only the static library is built, these properties must
|
||||||
|
# be set to ensure the static lib .pdb is staged for installation.
|
||||||
|
IF(NOT BUILD_SHARED_LIBS)
|
||||||
|
SET_TARGET_PROPERTIES( assimp PROPERTIES
|
||||||
|
COMPILE_PDB_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||||
|
COMPILE_PDB_NAME assimp${LIBRARY_SUFFIX}
|
||||||
|
COMPILE_PDB_NAME_DEBUG assimp${LIBRARY_SUFFIX}${CMAKE_DEBUG_POSTFIX}
|
||||||
|
)
|
||||||
|
ENDIF()
|
||||||
|
|
||||||
IF(CMAKE_GENERATOR MATCHES "^Visual Studio")
|
IF(CMAKE_GENERATOR MATCHES "^Visual Studio")
|
||||||
install(FILES ${Assimp_BINARY_DIR}/code/Debug/assimp${LIBRARY_SUFFIX}${CMAKE_DEBUG_POSTFIX}.pdb
|
install(FILES ${Assimp_BINARY_DIR}/code/Debug/assimp${LIBRARY_SUFFIX}${CMAKE_DEBUG_POSTFIX}.pdb
|
||||||
DESTINATION ${ASSIMP_LIB_INSTALL_DIR}
|
DESTINATION ${ASSIMP_LIB_INSTALL_DIR}
|
||||||
|
|
|
@ -316,7 +316,7 @@ Video::Video(uint64_t id, const Element& element, const Document& doc, const std
|
||||||
relativeFileName = ParseTokenAsString(GetRequiredToken(*RelativeFilename,0));
|
relativeFileName = ParseTokenAsString(GetRequiredToken(*RelativeFilename,0));
|
||||||
}
|
}
|
||||||
|
|
||||||
if(Content) {
|
if(Content && !Content->Tokens().empty()) {
|
||||||
//this field is omitted when the embedded texture is already loaded, let's ignore if it's not found
|
//this field is omitted when the embedded texture is already loaded, let's ignore if it's not found
|
||||||
try {
|
try {
|
||||||
const Token& token = GetRequiredToken(*Content, 0);
|
const Token& token = GetRequiredToken(*Content, 0);
|
||||||
|
|
|
@ -228,6 +228,7 @@ bool FindDegeneratesProcess::ExecuteOnMesh( aiMesh* mesh) {
|
||||||
if ( area < 1e-6 ) {
|
if ( area < 1e-6 ) {
|
||||||
if ( mConfigRemoveDegenerates ) {
|
if ( mConfigRemoveDegenerates ) {
|
||||||
remove_me[ a ] = true;
|
remove_me[ a ] = true;
|
||||||
|
++deg;
|
||||||
goto evil_jump_outside;
|
goto evil_jump_outside;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue