Utility/OBJLoader: Add support for emissive/normal maps by using custom keywords
This commit is contained in:
parent
31c272ab98
commit
05a5c4c42e
|
|
@ -80,6 +80,7 @@ Nazara Engine:
|
|||
- Dual-stack sockets are now supported (by using NetProtocol_Any at creation/opening)
|
||||
- Fixed IPv6 addresses not being correctly encoded/decoded from the socket API.
|
||||
- Fix copy and move semantic on HandledObject and ObjectHandle
|
||||
- Add support for emissive and normal maps in .mtl loader using custom keywords ([map_]emissive and [map_]normal)
|
||||
|
||||
Nazara Development Kit:
|
||||
- Added ImageWidget (#139)
|
||||
|
|
|
|||
|
|
@ -45,6 +45,8 @@ namespace Nz
|
|||
String decalMap;
|
||||
String diffuseMap;
|
||||
String displacementMap;
|
||||
String emissiveMap; //< <!> Custom addition: not present in MTL
|
||||
String normalMap; //< <!> Custom addition: not present in MTL
|
||||
String reflectionMap;
|
||||
String shininessMap;
|
||||
String specularMap;
|
||||
|
|
|
|||
|
|
@ -251,6 +251,32 @@ namespace Nz
|
|||
currentMaterial->reflectionMap = map;
|
||||
}
|
||||
}
|
||||
else if (keyword == "map_normal" || keyword == "normal")
|
||||
{
|
||||
// <!> This is a custom keyword
|
||||
std::size_t mapPos = m_currentLine.GetWordPosition(1);
|
||||
if (mapPos != String::npos)
|
||||
{
|
||||
String map = m_currentLine.SubString(mapPos);
|
||||
if (!currentMaterial)
|
||||
currentMaterial = AddMaterial("default");
|
||||
|
||||
currentMaterial->normalMap = map;
|
||||
}
|
||||
}
|
||||
else if (keyword == "map_emissive" || keyword == "emissive")
|
||||
{
|
||||
// <!> This is a custom keyword
|
||||
std::size_t mapPos = m_currentLine.GetWordPosition(1);
|
||||
if (mapPos != String::npos)
|
||||
{
|
||||
String map = m_currentLine.SubString(mapPos);
|
||||
if (!currentMaterial)
|
||||
currentMaterial = AddMaterial("default");
|
||||
|
||||
currentMaterial->emissiveMap = map;
|
||||
}
|
||||
}
|
||||
else if (keyword == "newmtl")
|
||||
{
|
||||
String materialName = m_currentLine.SubString(m_currentLine.GetWordPosition(1));
|
||||
|
|
|
|||
|
|
@ -107,6 +107,24 @@ namespace Nz
|
|||
data.SetParameter(MaterialData::DiffuseTexturePath, fullPath);
|
||||
}
|
||||
|
||||
if (!mtlMat->emissiveMap.IsEmpty())
|
||||
{
|
||||
String fullPath = mtlMat->emissiveMap;
|
||||
if (!Nz::File::IsAbsolute(fullPath))
|
||||
fullPath.Prepend(baseDir);
|
||||
|
||||
data.SetParameter(MaterialData::EmissiveTexturePath, fullPath);
|
||||
}
|
||||
|
||||
if (!mtlMat->normalMap.IsEmpty())
|
||||
{
|
||||
String fullPath = mtlMat->normalMap;
|
||||
if (!Nz::File::IsAbsolute(fullPath))
|
||||
fullPath.Prepend(baseDir);
|
||||
|
||||
data.SetParameter(MaterialData::NormalTexturePath, fullPath);
|
||||
}
|
||||
|
||||
if (!mtlMat->specularMap.IsEmpty())
|
||||
{
|
||||
String fullPath = mtlMat->specularMap;
|
||||
|
|
|
|||
Loading…
Reference in New Issue