예제 #1
0
	void CModel::mergeTextureStreams(_In_ CModel * pSourceModel)
	{
		if (pSourceModel == nullptr)
			throw CNMRException(NMR_ERROR_INVALIDPARAM);

		nfUint32 nCount = pSourceModel->getTextureStreamCount();
		nfUint32 nIndex;

		for (nIndex = 0; nIndex < nCount; nIndex++) {
			std::wstring sPath = pSourceModel->getTextureStreamPath(nIndex);
			PImportStream pTextureStream = pSourceModel->getTextureStream(nIndex);
			PImportStream pCopiedStream = pTextureStream->copyToMemory();
			addTextureStream(sPath, pCopiedStream);
		}

	}
	void CModelReader_3MF_Native::extractTexturesFromRelationships(_In_ COpcPackagePart * pModelPart)
	{
		if (pModelPart == nullptr)
			throw CNMRException(NMR_ERROR_INVALIDPARAM);

		std::list<POpcPackageRelationship> RelationShips = pModelPart->getRelationShips();
		std::list<POpcPackageRelationship>::iterator iIterator;

		for (iIterator = RelationShips.begin(); iIterator != RelationShips.end(); iIterator++) {
			std::wstring sType = (*iIterator)->getType();
			if (wcscmp(sType.c_str(), PACKAGE_TEXTURE_RELATIONSHIP_TYPE) == 0) {
				std::wstring sURI = (*iIterator)->getTargetPartURI();
				POpcPackagePart pTexturePart = m_pPackageReader->createPart(sURI);
				PImportStream pTextureStream = pTexturePart->getImportStream();
				PImportStream pMemoryStream = pTextureStream->copyToMemory();
				addTextureStream(sURI, pMemoryStream);
			}
		}

	}