3MF: fix model folder desc.
parent
017b7d1a2f
commit
c8ae0bbb3d
|
@ -153,7 +153,11 @@ bool D3MFExporter::exportRelations() {
|
||||||
mRelOutput << "<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">";
|
mRelOutput << "<Relationships xmlns=\"http://schemas.openxmlformats.org/package/2006/relationships\">";
|
||||||
|
|
||||||
for ( size_t i = 0; i < mRelations.size(); ++i ) {
|
for ( size_t i = 0; i < mRelations.size(); ++i ) {
|
||||||
mRelOutput << "<Relationship Target=\"/" << mRelations[ i ]->target << "\" ";
|
if ( mRelations[ i ]->target[ 0 ] == '/' ) {
|
||||||
|
mRelOutput << "<Relationship Target=\"" << mRelations[ i ]->target << "\" ";
|
||||||
|
} else {
|
||||||
|
mRelOutput << "<Relationship Target=\"/" << mRelations[ i ]->target << "\" ";
|
||||||
|
}
|
||||||
mRelOutput << "Id=\"" << mRelations[i]->id << "\" ";
|
mRelOutput << "Id=\"" << mRelations[i]->id << "\" ";
|
||||||
mRelOutput << "Type=\"" << mRelations[ i ]->type << "\" />";
|
mRelOutput << "Type=\"" << mRelations[ i ]->type << "\" />";
|
||||||
mRelOutput << std::endl;
|
mRelOutput << std::endl;
|
||||||
|
@ -205,14 +209,6 @@ void D3MFExporter::writeHeader() {
|
||||||
mModelOutput << std::endl;
|
mModelOutput << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
static std::string to_hex( int to_convert ) {
|
|
||||||
std::string result;
|
|
||||||
std::stringstream ss;
|
|
||||||
ss << std::hex << to_convert;
|
|
||||||
ss >> result;
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
void D3MFExporter::writeBaseMaterials() {
|
void D3MFExporter::writeBaseMaterials() {
|
||||||
mModelOutput << "<basematerials id=\"1\">\n";
|
mModelOutput << "<basematerials id=\"1\">\n";
|
||||||
for ( size_t i = 0; i < mScene->mNumMaterials; ++i ) {
|
for ( size_t i = 0; i < mScene->mNumMaterials; ++i ) {
|
||||||
|
@ -229,19 +225,20 @@ void D3MFExporter::writeBaseMaterials() {
|
||||||
if ( mat->Get( AI_MATKEY_COLOR_DIFFUSE, color ) == aiReturn_SUCCESS ) {
|
if ( mat->Get( AI_MATKEY_COLOR_DIFFUSE, color ) == aiReturn_SUCCESS ) {
|
||||||
hexDiffuseColor = "#";
|
hexDiffuseColor = "#";
|
||||||
std::string tmp;
|
std::string tmp;
|
||||||
tmp = to_hex( color.r );
|
|
||||||
|
tmp = DecimalToHexa( color.r );
|
||||||
hexDiffuseColor += tmp;
|
hexDiffuseColor += tmp;
|
||||||
tmp = to_hex( color.g );
|
tmp = DecimalToHexa( color.g );
|
||||||
hexDiffuseColor += tmp;
|
hexDiffuseColor += tmp;
|
||||||
tmp = to_hex( color.b );
|
tmp = DecimalToHexa( color.b );
|
||||||
hexDiffuseColor += tmp;
|
hexDiffuseColor += tmp;
|
||||||
tmp = to_hex( color.a );
|
tmp = DecimalToHexa( color.a );
|
||||||
hexDiffuseColor += tmp;
|
hexDiffuseColor += tmp;
|
||||||
} else {
|
} else {
|
||||||
hexDiffuseColor = "#FFFFFFFF";
|
hexDiffuseColor = "#FFFFFFFF";
|
||||||
}
|
}
|
||||||
|
|
||||||
mModelOutput << "<base name=\""+strName+"\" "+" displaycolor=\""+hexDiffuseColor+"\">\n";
|
mModelOutput << "<base name=\""+strName+"\" "+" displaycolor=\""+hexDiffuseColor+"\" />\n";
|
||||||
}
|
}
|
||||||
mModelOutput << "</basematerials>\n";
|
mModelOutput << "</basematerials>\n";
|
||||||
}
|
}
|
||||||
|
|
|
@ -259,7 +259,6 @@ private:
|
||||||
|
|
||||||
while ( ReadToEndElement( D3MF::XmlTag::basematerials ) ) {
|
while ( ReadToEndElement( D3MF::XmlTag::basematerials ) ) {
|
||||||
mMatArray.push_back( readMaterialDef() );
|
mMatArray.push_back( readMaterialDef() );
|
||||||
xmlReader->read();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -398,7 +397,6 @@ static const aiImporterDesc desc = {
|
||||||
Extension.c_str()
|
Extension.c_str()
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
D3MFImporter::D3MFImporter()
|
D3MFImporter::D3MFImporter()
|
||||||
: BaseImporter() {
|
: BaseImporter() {
|
||||||
// empty
|
// empty
|
||||||
|
@ -431,8 +429,8 @@ const aiImporterDesc *D3MFImporter::GetInfo() const {
|
||||||
return &desc;
|
return &desc;
|
||||||
}
|
}
|
||||||
|
|
||||||
void D3MFImporter::InternReadFile(const std::string &pFile, aiScene *pScene, IOSystem *pIOHandler) {
|
void D3MFImporter::InternReadFile( const std::string &filename, aiScene *pScene, IOSystem *pIOHandler ) {
|
||||||
D3MF::D3MFOpcPackage opcPackage(pIOHandler, pFile);
|
D3MF::D3MFOpcPackage opcPackage(pIOHandler, filename);
|
||||||
|
|
||||||
std::unique_ptr<CIrrXML_IOStreamReader> xmlStream(new CIrrXML_IOStreamReader(opcPackage.RootStream()));
|
std::unique_ptr<CIrrXML_IOStreamReader> xmlStream(new CIrrXML_IOStreamReader(opcPackage.RootStream()));
|
||||||
std::unique_ptr<D3MF::XmlReader> xmlReader(irr::io::createIrrXMLReader(xmlStream.get()));
|
std::unique_ptr<D3MF::XmlReader> xmlReader(irr::io::createIrrXMLReader(xmlStream.get()));
|
||||||
|
|
|
@ -55,7 +55,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
/// @return The number of written characters if the buffer size was big enough. If an encoding error occurs, a negative number is returned.
|
/// @return The number of written characters if the buffer size was big enough. If an encoding error occurs, a negative number is returned.
|
||||||
#if defined(_MSC_VER) && _MSC_VER < 1900
|
#if defined(_MSC_VER) && _MSC_VER < 1900
|
||||||
|
|
||||||
inline int c99_ai_vsnprintf(char *outBuf, size_t size, const char *format, va_list ap) {
|
inline
|
||||||
|
int c99_ai_vsnprintf(char *outBuf, size_t size, const char *format, va_list ap) {
|
||||||
int count(-1);
|
int count(-1);
|
||||||
if (0 != size) {
|
if (0 != size) {
|
||||||
count = _vsnprintf_s(outBuf, size, _TRUNCATE, format, ap);
|
count = _vsnprintf_s(outBuf, size, _TRUNCATE, format, ap);
|
||||||
|
@ -67,7 +68,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
inline int ai_snprintf(char *outBuf, size_t size, const char *format, ...) {
|
inline
|
||||||
|
int ai_snprintf(char *outBuf, size_t size, const char *format, ...) {
|
||||||
int count;
|
int count;
|
||||||
va_list ap;
|
va_list ap;
|
||||||
|
|
||||||
|
@ -82,14 +84,24 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
# define ai_snprintf snprintf
|
# define ai_snprintf snprintf
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/// @fn to_string
|
||||||
|
/// @brief The portable version of to_string ( some gcc-versions on embedded devices are not supporting this).
|
||||||
|
/// @param value The value to write into the std::string.
|
||||||
|
/// @return The value as a std::string
|
||||||
template <typename T>
|
template <typename T>
|
||||||
inline
|
inline
|
||||||
std::string to_string( T value ) {
|
std::string to_string( T value ) {
|
||||||
std::ostringstream os;
|
std::ostringstream os;
|
||||||
os << value;
|
os << value;
|
||||||
|
|
||||||
return os.str();
|
return os.str();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// @fn ai_strtof
|
||||||
|
/// @brief The portable version of strtof.
|
||||||
|
/// @param begin The first character of the string.
|
||||||
|
/// @param end The last character
|
||||||
|
/// @return The float value, 0.0f in cas of an error.
|
||||||
inline
|
inline
|
||||||
float ai_strtof( const char *begin, const char *end ) {
|
float ai_strtof( const char *begin, const char *end ) {
|
||||||
if ( nullptr == begin ) {
|
if ( nullptr == begin ) {
|
||||||
|
@ -107,5 +119,23 @@ float ai_strtof( const char *begin, const char *end ) {
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // INCLUDED_AI_STRINGUTILS_H
|
/// @fn DecimalToHexa
|
||||||
|
/// @brief The portable to convert a decimal value into a hexadecimal string.
|
||||||
|
/// @param toConvert Value to convert
|
||||||
|
/// @return The hexadecimal string, is empty in case of an error.
|
||||||
|
template<class T>
|
||||||
|
inline
|
||||||
|
std::string DecimalToHexa( T toConvert ) {
|
||||||
|
std::string result;
|
||||||
|
std::stringstream ss;
|
||||||
|
ss << std::hex << toConvert;
|
||||||
|
ss >> result;
|
||||||
|
|
||||||
|
for ( size_t i = 0; i < result.size(); ++i ) {
|
||||||
|
result[ i ] = toupper( result[ i ] );
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // INCLUDED_AI_STRINGUTILS_H
|
||||||
|
|
Loading…
Reference in New Issue