Merge branch 'master' into issue_216
commit
9206d1b62b
|
@ -310,7 +310,7 @@ foreach (GCOV_FILE ${GCOV_FILES})
|
|||
message("MD5: ${GCOV_SRC_PATH} = ${GCOV_CONTENTS_MD5}")
|
||||
|
||||
# Loads the gcov file as a list of lines.
|
||||
# (We first open the file and replace all occurences of [] with _
|
||||
# (We first open the file and replace all occurrences of [] with _
|
||||
# because CMake will fail to parse a line containing unmatched brackets...
|
||||
# also the \ to escaped \n in macros screws up things.)
|
||||
# https://public.kitware.com/Bug/view.php?id=15369
|
||||
|
@ -329,7 +329,7 @@ foreach (GCOV_FILE ${GCOV_FILES})
|
|||
# Instead of trying to parse the source from the
|
||||
# gcov file, simply read the file contents from the source file.
|
||||
# (Parsing it from the gcov is hard because C-code uses ; in many places
|
||||
# which also happens to be the same as the CMake list delimeter).
|
||||
# which also happens to be the same as the CMake list delimiter).
|
||||
file(READ ${GCOV_SRC_PATH} GCOV_FILE_SOURCE)
|
||||
|
||||
string(REPLACE "\\" "\\\\" GCOV_FILE_SOURCE "${GCOV_FILE_SOURCE}")
|
||||
|
|
|
@ -249,7 +249,7 @@ private:
|
|||
|
||||
/// \fn size_t PostprocessHelper_GetTextureID_Or_Create(const std::string& pID_R, const std::string& pID_G, const std::string& pID_B, const std::string& pID_A)
|
||||
/// Return converted texture ID which related to specified source textures ID's. If converted texture does not exist then it will be created and ID on new
|
||||
/// converted texture will be returned. Convertion: set of textures from \ref CAMFImporter_NodeElement_Texture to one \ref SPP_Texture and place it
|
||||
/// converted texture will be returned. Conversion: set of textures from \ref CAMFImporter_NodeElement_Texture to one \ref SPP_Texture and place it
|
||||
/// to converted textures list.
|
||||
/// Any of source ID's can be absent(empty string) or even one ID only specified. But at least one ID must be specified.
|
||||
/// \param [in] pID_R - ID of source "red" texture.
|
||||
|
@ -378,7 +378,7 @@ private:
|
|||
void XML_CheckNode_MustHaveChildren();
|
||||
|
||||
/// \fn bool XML_CheckNode_NameEqual(const std::string& pNodeName)
|
||||
/// Chek if current node name is equal to pNodeName.
|
||||
/// Check if current node name is equal to pNodeName.
|
||||
/// \param [in] pNodeName - name for checking.
|
||||
/// return true if current node name is equal to pNodeName, else - false.
|
||||
bool XML_CheckNode_NameEqual(const std::string& pNodeName) { return mReader->getNodeName() == pNodeName; }
|
||||
|
|
|
@ -137,7 +137,7 @@ struct CAMFImporter_NodeElement_Instance : public CAMFImporter_NodeElement
|
|||
{
|
||||
/****************** Variables ******************/
|
||||
|
||||
std::string ObjectID;///< ID of object for instanciation.
|
||||
std::string ObjectID;///< ID of object for instantiation.
|
||||
/// \var Delta - The distance of translation in the x, y, or z direction, respectively, in the referenced object's coordinate system, to
|
||||
/// create an instance of the object in the current constellation.
|
||||
aiVector3D Delta;
|
||||
|
|
|
@ -1561,7 +1561,7 @@ void ColladaExporter::WriteNode( const aiScene* pScene, aiNode* pNode)
|
|||
for( size_t a = 0; a < pNode->mNumMeshes; ++a )
|
||||
{
|
||||
const aiMesh* mesh = mScene->mMeshes[pNode->mMeshes[a]];
|
||||
// do not instanciate mesh if empty. I wonder how this could happen
|
||||
// do not instantiate mesh if empty. I wonder how this could happen
|
||||
if( mesh->mNumFaces == 0 || mesh->mNumVertices == 0 )
|
||||
continue;
|
||||
|
||||
|
|
|
@ -302,7 +302,7 @@ struct Accessor
|
|||
size_t mOffset; // in number of values
|
||||
size_t mStride; // Stride in number of values
|
||||
std::vector<std::string> mParams; // names of the data streams in the accessors. Empty string tells to ignore.
|
||||
size_t mSubOffset[4]; // Suboffset inside the object for the common 4 elements. For a vector, thats XYZ, for a color RGBA and so on.
|
||||
size_t mSubOffset[4]; // Suboffset inside the object for the common 4 elements. For a vector, that's XYZ, for a color RGBA and so on.
|
||||
// For example, SubOffset[0] denotes which of the values inside the object is the vector X component.
|
||||
std::string mSource; // URL of the source array
|
||||
mutable const Data* mData; // Pointer to the source array, if resolved. NULL else
|
||||
|
|
|
@ -1619,7 +1619,7 @@ void ColladaLoader::FillMaterials( const ColladaParser& pParser, aiScene* /*pSce
|
|||
mat.AddProperty( &effect.mRefractIndex, 1, AI_MATKEY_REFRACTI);
|
||||
|
||||
// transparency, a very hard one. seemingly not all files are following the
|
||||
// specification here (1.0 transparency => completly opaque)...
|
||||
// specification here (1.0 transparency => completely opaque)...
|
||||
// therefore, we let the opportunity for the user to manually invert
|
||||
// the transparency if necessary and we add preliminary support for RGB_ZERO mode
|
||||
if(effect.mTransparency >= 0.f && effect.mTransparency <= 1.f) {
|
||||
|
|
|
@ -224,7 +224,7 @@ void ColladaParser::ReadStructure()
|
|||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
// Reads asset informations such as coordinate system informations and legal blah
|
||||
// Reads asset information such as coordinate system information and legal blah
|
||||
void ColladaParser::ReadAssetInfo()
|
||||
{
|
||||
if( mReader->isEmptyElement())
|
||||
|
|
|
@ -77,7 +77,7 @@ namespace Assimp
|
|||
/** Reads the structure of the file */
|
||||
void ReadStructure();
|
||||
|
||||
/** Reads asset informations such as coordinate system informations and legal blah */
|
||||
/** Reads asset information such as coordinate system information and legal blah */
|
||||
void ReadAssetInfo();
|
||||
|
||||
/** Reads the animation library */
|
||||
|
|
|
@ -46,11 +46,13 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||
#ifndef INCLUDED_AI_FI_READER_H
|
||||
#define INCLUDED_AI_FI_READER_H
|
||||
|
||||
#include <irrXML.h>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <cerrno>
|
||||
#include <cwchar>
|
||||
#include <memory>
|
||||
#include <vector>
|
||||
#include <cstdint>
|
||||
#include <irrXML.h>
|
||||
|
||||
namespace Assimp {
|
||||
|
||||
|
@ -154,7 +156,7 @@ class IOStream;
|
|||
|
||||
class FIReader: public irr::io::IIrrXMLReader<char, irr::io::IXMLBase> {
|
||||
public:
|
||||
|
||||
virtual ~FIReader();
|
||||
virtual std::shared_ptr<const FIValue> getAttributeEncodedValue(int idx) const = 0;
|
||||
|
||||
virtual std::shared_ptr<const FIValue> getAttributeEncodedValue(const char *name) const = 0;
|
||||
|
@ -167,6 +169,11 @@ public:
|
|||
|
||||
};// class IFIReader
|
||||
|
||||
inline
|
||||
FIReader::~FIReader() {
|
||||
// empty
|
||||
}
|
||||
|
||||
}// namespace Assimp
|
||||
|
||||
#endif // INCLUDED_AI_FI_READER_H
|
||||
|
|
|
@ -483,7 +483,7 @@ void LWOImporter::FindVCChannels(const LWO::Surface& surf, LWO::SortedRep& sorte
|
|||
const LWO::VColorChannel& vc = layer.mVColorChannels[i];
|
||||
|
||||
if (surf.mVCMap == vc.name) {
|
||||
// The vertex color map is explicitely requested by the surface so we need to take special care of it
|
||||
// The vertex color map is explicitly requested by the surface so we need to take special care of it
|
||||
for (unsigned int a = 0; a < std::min(next,AI_MAX_NUMBER_OF_COLOR_SETS-1u); ++a) {
|
||||
out[a+1] = out[a];
|
||||
}
|
||||
|
|
|
@ -471,7 +471,7 @@ void LWSImporter::BuildGraph(aiNode* nd, LWS::NodeDesc& src, std::vector<Attachm
|
|||
// Determine the exact location of a LWO file
|
||||
std::string LWSImporter::FindLWOFile(const std::string& in)
|
||||
{
|
||||
// insert missing directory seperator if necessary
|
||||
// insert missing directory separator if necessary
|
||||
std::string tmp;
|
||||
if (in.length() > 3 && in[1] == ':'&& in[2] != '\\' && in[2] != '/')
|
||||
{
|
||||
|
|
|
@ -155,7 +155,7 @@ std::string ObjExporter :: GetMaterialLibName()
|
|||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
std::string ObjExporter::GetMaterialLibFileName() {
|
||||
// Remove existing .obj file extention so that the final material file name will be fileName.mtl and not fileName.obj.mtl
|
||||
// Remove existing .obj file extension so that the final material file name will be fileName.mtl and not fileName.obj.mtl
|
||||
size_t lastdot = filename.find_last_of('.');
|
||||
if (lastdot != std::string::npos)
|
||||
return filename.substr(0, lastdot) + MaterialExt;
|
||||
|
|
|
@ -258,7 +258,7 @@ aiMaterial* OgreImporter::ReadMaterial(const std::string &pFile, Assimp::IOSyste
|
|||
ReadTechnique(Trim(techniqueName), ss, material);
|
||||
}
|
||||
|
||||
// Read informations from a custom material
|
||||
// Read information from a custom material
|
||||
/** @todo This "set $x y" does not seem to be a official Ogre material system feature.
|
||||
Materials can inherit other materials and override texture units by using the (unique)
|
||||
parent texture unit name in your cloned material.
|
||||
|
|
|
@ -317,7 +317,7 @@ void TextureTransformStep::Execute( aiScene* pScene)
|
|||
info.lockedPos = AI_TT_UV_IDX_LOCK_TBD;
|
||||
}
|
||||
|
||||
// Get all coresponding meshes
|
||||
// Get all corresponding meshes
|
||||
for (unsigned int n = 0; n < pScene->mNumMeshes;++n) {
|
||||
aiMesh* mesh = pScene->mMeshes[n];
|
||||
if (mesh->mMaterialIndex != i || !mesh->mTextureCoords[0])
|
||||
|
|
|
@ -27,7 +27,7 @@ namespace Assimp
|
|||
///
|
||||
/// Pay attention that X3D is format for interactive graphic and simulations for web browsers. aiScene can not contain all features of the X3D format.
|
||||
/// Also, aiScene contain rasterized-like data. For example, X3D can describe circle all cylinder with one tag, but aiScene contain result of tesselation:
|
||||
/// vertices, faces etc. Yes, you can use algorithm for detecting figures or shapes, but thats not good idea at all.
|
||||
/// vertices, faces etc. Yes, you can use algorithm for detecting figures or shapes, but that's not a good idea at all.
|
||||
///
|
||||
/// Supported nodes:
|
||||
/// Core component:
|
||||
|
@ -96,7 +96,7 @@ private:
|
|||
aiMatrix4x4 Matrix_GlobalToCurrent(const aiNode& pNode) const;
|
||||
|
||||
/// \fn void AttrHelper_CommaToPoint(std::string& pStringWithComma)
|
||||
/// Convert commas in string to points. Thats need because "std::to_string" result depend on locale (regional settings).
|
||||
/// Convert commas in string to points. That's needed because "std::to_string" result depends on locale (regional settings).
|
||||
/// \param [in, out] pStringWithComma - reference to string, which must be modified.
|
||||
void AttrHelper_CommaToPoint(std::string& pStringWithComma) { for(char& c: pStringWithComma) { if(c == ',') c = '.'; } }
|
||||
|
||||
|
|
|
@ -176,7 +176,7 @@ namespace Assimp {
|
|||
/// Ignored attributes: "creaseAngle", "convex", "solid".
|
||||
///
|
||||
/// Texture coordinates generating: only for Sphere, Cone, Cylinder. In all other case used PLANE mapping.
|
||||
/// It's better that Assimp main code has powerfull texture coordinates generator. Then is not needed to
|
||||
/// It's better that Assimp main code has powerful texture coordinates generator. Then is not needed to
|
||||
/// duplicate this code in every importer.
|
||||
///
|
||||
/// Lighting limitations.
|
||||
|
@ -401,10 +401,10 @@ private:
|
|||
/************** Functions: XML set *************/
|
||||
/***********************************************/
|
||||
|
||||
/// Chek if current node is empty: <node />. If not then exception will throwed.
|
||||
/// Check if current node is empty: <node />. If not then exception will throwed.
|
||||
void XML_CheckNode_MustBeEmpty();
|
||||
|
||||
/// Chek if current node name is equal to pNodeName.
|
||||
/// Check if current node name is equal to pNodeName.
|
||||
/// \param [in] pNodeName - name for checking.
|
||||
/// return true if current node name is equal to pNodeName, else - false.
|
||||
bool XML_CheckNode_NameEqual(const std::string& pNodeName) { return mReader->getNodeName() == pNodeName; }
|
||||
|
|
|
@ -971,6 +971,8 @@ namespace glTF2
|
|||
Ref<T> Create(const std::string& id)
|
||||
{ return Create(id.c_str()); }
|
||||
|
||||
unsigned int Remove(const char* id);
|
||||
|
||||
inline unsigned int Size() const
|
||||
{ return unsigned(mObjs.size()); }
|
||||
|
||||
|
|
|
@ -193,6 +193,50 @@ inline void LazyDict<T>::DetachFromDocument()
|
|||
mDict = 0;
|
||||
}
|
||||
|
||||
template<class T>
|
||||
unsigned int LazyDict<T>::Remove(const char* id)
|
||||
{
|
||||
id = T::TranslateId(mAsset, id);
|
||||
|
||||
typename IdDict::iterator it = mObjsById.find(id);
|
||||
|
||||
if (it == mObjsById.end()) {
|
||||
throw DeadlyExportError("GLTF: Object with id \"" + std::string(id) + "\" is not found");
|
||||
}
|
||||
|
||||
const int index = it->second;
|
||||
|
||||
mAsset.mUsedIds[id] = false;
|
||||
mObjsById.erase(id);
|
||||
mObjsByOIndex.erase(index);
|
||||
mObjs.erase(mObjs.begin() + index);
|
||||
|
||||
//update index of object in mObjs;
|
||||
for (size_t i = index; i < mObjs.size(); ++i) {
|
||||
T *obj = mObjs[i];
|
||||
|
||||
obj->index = i;
|
||||
}
|
||||
|
||||
for (IdDict::iterator it = mObjsById.begin(); it != mObjsById.end(); ++it) {
|
||||
if (it->second <= index) {
|
||||
continue;
|
||||
}
|
||||
|
||||
mObjsById[it->first] = it->second - 1;
|
||||
}
|
||||
|
||||
for (Dict::iterator it = mObjsByOIndex.begin(); it != mObjsByOIndex.end(); ++it) {
|
||||
if (it->second <= index) {
|
||||
continue;
|
||||
}
|
||||
|
||||
mObjsByOIndex[it->first] = it->second - 1;
|
||||
}
|
||||
|
||||
return index;
|
||||
}
|
||||
|
||||
template<class T>
|
||||
Ref<T> LazyDict<T>::Retrieve(unsigned int i)
|
||||
{
|
||||
|
|
|
@ -56,7 +56,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||
#include <assimp/material.h>
|
||||
#include <assimp/scene.h>
|
||||
|
||||
// Header files, standart library.
|
||||
// Header files, standard library.
|
||||
#include <memory>
|
||||
#include <inttypes.h>
|
||||
|
||||
|
@ -800,9 +800,33 @@ void glTF2Exporter::MergeMeshes()
|
|||
for (unsigned int m = nMeshes - 1; m >= 1; --m) {
|
||||
Ref<Mesh> mesh = node->meshes.at(m);
|
||||
|
||||
firstMesh->primitives.insert(firstMesh->primitives.end(), mesh->primitives.begin(), mesh->primitives.end());
|
||||
//append this mesh's primitives to the first mesh's primitives
|
||||
firstMesh->primitives.insert(
|
||||
firstMesh->primitives.end(),
|
||||
mesh->primitives.begin(),
|
||||
mesh->primitives.end()
|
||||
);
|
||||
|
||||
node->meshes.erase(node->meshes.begin() + m);
|
||||
//remove the mesh from the list of meshes
|
||||
unsigned int removedIndex = mAsset->meshes.Remove(mesh->id.c_str());
|
||||
|
||||
//find the presence of the removed mesh in other nodes
|
||||
for (unsigned int nn = 0; nn < mAsset->nodes.Size(); ++nn) {
|
||||
Ref<Node> node = mAsset->nodes.Get(nn);
|
||||
|
||||
for (unsigned int mm = 0; mm < node->meshes.size(); ++mm) {
|
||||
Ref<Mesh>& meshRef = node->meshes.at(mm);
|
||||
unsigned int meshIndex = meshRef.GetIndex();
|
||||
|
||||
if (meshIndex == removedIndex) {
|
||||
node->meshes.erase(node->meshes.begin() + mm);
|
||||
} else if (meshIndex > removedIndex) {
|
||||
Ref<Mesh> newMeshRef = mAsset->meshes.Get(meshIndex - 1);
|
||||
|
||||
meshRef = newMeshRef;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//since we were looping backwards, reverse the order of merged primitives to their original order
|
||||
|
|
|
@ -56,7 +56,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||
#include <assimp/material.h>
|
||||
#include <assimp/scene.h>
|
||||
|
||||
// Header files, standart library.
|
||||
// Header files, standard library.
|
||||
#include <memory>
|
||||
#include <inttypes.h>
|
||||
|
||||
|
|
|
@ -1742,7 +1742,7 @@ UML_LOOK = NO
|
|||
# the class node. If there are many fields or methods and many nodes the
|
||||
# graph may become too big to be useful. The UML_LIMIT_NUM_FIELDS
|
||||
# threshold limits the number of items for each type to make the size more
|
||||
# managable. Set this to 0 for no limit. Note that the threshold may be
|
||||
# manageable. Set this to 0 for no limit. Note that the threshold may be
|
||||
# exceeded by 50% before the limit is enforced.
|
||||
|
||||
UML_LIMIT_NUM_FIELDS = 10
|
||||
|
|
10
doc/dox.h
10
doc/dox.h
|
@ -60,7 +60,7 @@ that it has not been implemented yet and some (most ...) formats lack proper spe
|
|||
<b>Stanford Ply</b> ( <i>*.ply</i> )<br>
|
||||
<b>TrueSpace</b> ( <i>*.cob, *.scn</i> )<sup>2</sup><br><br>
|
||||
</tt>
|
||||
See the @link importer_notes Importer Notes Page @endlink for informations, what a specific importer can do and what not.
|
||||
See the @link importer_notes Importer Notes Page @endlink for information, what a specific importer can do and what not.
|
||||
Note that although this paper claims to be the official documentation,
|
||||
http://assimp.sourceforge.net/main_features_formats.html
|
||||
<br>is usually the most up-to-date list of file formats supported by the library. <br>
|
||||
|
@ -81,7 +81,7 @@ formats handle the required endian conversion correctly, so large parts of the l
|
|||
|
||||
The assimp linker library and viewer application are provided under the BSD 3-clause license. This basically means
|
||||
that you are free to use it in open- or closed-source projects, for commercial or non-commercial purposes as you like
|
||||
as long as you retain the license informations and take own responsibility for what you do with it. For details see
|
||||
as long as you retain the license information and take own responsibility for what you do with it. For details see
|
||||
the LICENSE file.
|
||||
|
||||
You can find test models for almost all formats in the <assimp_root>/test/models directory. Beware, they're *free*,
|
||||
|
@ -1420,7 +1420,7 @@ IFC file properties (IfcPropertySet) are kept as per-node metadata, see aiNode::
|
|||
|
||||
This section contains implementations notes for the OgreXML importer.
|
||||
@subsection overview Overview
|
||||
Ogre importer is currently optimized for the Blender Ogre exporter, because thats the only one that I use. You can find the Blender Ogre exporter at: http://www.ogre3d.org/forums/viewtopic.php?f=8&t=45922
|
||||
Ogre importer is currently optimized for the Blender Ogre exporter, because that's the only one that I use. You can find the Blender Ogre exporter at: http://www.ogre3d.org/forums/viewtopic.php?f=8&t=45922
|
||||
|
||||
@subsection what What will be loaded?
|
||||
|
||||
|
@ -1434,7 +1434,7 @@ Skeleton: Skeleton with Bone hierarchy (Position and Rotation, but no Scaling in
|
|||
animations with rotation, translation and scaling keys.
|
||||
|
||||
@subsection export_Blender How to export Files from Blender
|
||||
You can find informations about how to use the Ogreexporter by your own, so here are just some options that you need, so the assimp
|
||||
You can find information about how to use the Ogreexporter by your own, so here are just some options that you need, so the assimp
|
||||
importer will load everything correctly:
|
||||
- Use either "Rendering Material" or "Custom Material" see @ref material
|
||||
- do not use "Flip Up Axies to Y"
|
||||
|
@ -1543,7 +1543,7 @@ Done! Please, share your loader that everyone can profit from it!
|
|||
|
||||
@section properties Properties
|
||||
|
||||
You can use properties to chance the behavior of you importer. In order to do so, you have to overide BaseImporter::SetupProperties, and specify
|
||||
You can use properties to chance the behavior of you importer. In order to do so, you have to override BaseImporter::SetupProperties, and specify
|
||||
you custom properties in config.h. Just have a look to the other AI_CONFIG_IMPORT_* defines and you will understand, how it works.
|
||||
|
||||
The properties can be set with Importer::SetProperty***() and can be accessed in your SetupProperties function with Importer::GetProperty***(). You can
|
||||
|
|
|
@ -903,7 +903,7 @@ enum aiComponent
|
|||
/** @brief Set the tessellation for IFC cylindrical shapes.
|
||||
*
|
||||
* This is used by the IFC importer to determine the tessellation parameter
|
||||
* for cylindrical shapes, i.e. the number of segments used to aproximate a circle.
|
||||
* for cylindrical shapes, i.e. the number of segments used to approximate a circle.
|
||||
* @note The default value is AI_IMPORT_IFC_DEFAULT_CYLINDRICAL_TESSELLATION and the
|
||||
* accepted values are in range [3, 180].
|
||||
* Property type: Integer.
|
||||
|
|
|
@ -206,7 +206,7 @@ class MeshKey(Structure):
|
|||
("mTime", c_double),
|
||||
|
||||
# Index into the aiMesh::mAnimMeshes array of the
|
||||
# mesh coresponding to the
|
||||
# mesh corresponding to the
|
||||
#aiMeshAnim hosting this
|
||||
# key frame. The referenced anim mesh is evaluated
|
||||
# according to the rules defined in the docs for
|
||||
|
|
|
@ -895,7 +895,7 @@ class PyAssimp3DViewer:
|
|||
aspect = camera.aspect
|
||||
|
||||
u = 0.1 # unit size (in m)
|
||||
l = 3 * u # lenght of the camera cone
|
||||
l = 3 * u # length of the camera cone
|
||||
f = 3 * u # aperture of the camera cone
|
||||
|
||||
glPushMatrix()
|
||||
|
|
|
@ -897,7 +897,7 @@ class PyAssimp3DViewer:
|
|||
aspect = camera.aspect
|
||||
|
||||
u = 0.1 # unit size (in m)
|
||||
l = 3 * u # lenght of the camera cone
|
||||
l = 3 * u # length of the camera cone
|
||||
f = 3 * u # aperture of the camera cone
|
||||
|
||||
glPushMatrix()
|
||||
|
|
|
@ -583,7 +583,7 @@ def clip_matrix(left, right, bottom, top, near, far, perspective=False):
|
|||
orthographic canonical view volume (a box).
|
||||
|
||||
Homogeneous coordinates transformed by the perspective clip matrix
|
||||
need to be dehomogenized (devided by w coordinate).
|
||||
need to be dehomogenized (divided by w coordinate).
|
||||
|
||||
>>> frustrum = numpy.random.rand(6)
|
||||
>>> frustrum[1] += frustrum[0]
|
||||
|
|
|
@ -51,7 +51,7 @@ import assimp.types;
|
|||
extern ( C ) {
|
||||
/*
|
||||
* These limits are required to match the settings Assimp was compiled
|
||||
* against. Therfore, do not redefine them unless you build the library
|
||||
* against. Therefore, do not redefine them unless you build the library
|
||||
* from source using the same definitions.
|
||||
*/
|
||||
|
||||
|
|
|
@ -1951,7 +1951,7 @@ error:
|
|||
|
||||
if (NULL == exception)
|
||||
{
|
||||
/* thats really a problem because we cannot throw in this case */
|
||||
/* that's really a problem because we cannot throw in this case */
|
||||
env->FatalError("could not throw java.io.IOException");
|
||||
}
|
||||
gLastErrorString = imp.GetErrorString();
|
||||
|
|
|
@ -114,7 +114,7 @@
|
|||
%include "interface/IOSystem.i"
|
||||
|
||||
|
||||
// We have to "instanciate" the templates used by the ASSSIMP_*_ARRAY macros
|
||||
// We have to "instantiate" the templates used by the ASSSIMP_*_ARRAY macros
|
||||
// here at the end to avoid running into forward reference issues (SWIG would
|
||||
// spit out the helper functions before the header includes for the element
|
||||
// types otherwise).
|
||||
|
|
|
@ -641,7 +641,7 @@ static CVReturn MyDisplayLinkCallback(CVDisplayLinkRef displayLink,const CVTimeS
|
|||
{
|
||||
for(MeshHelper* helper in modelMeshes)
|
||||
{
|
||||
// Set up meterial state.
|
||||
// Set up material state.
|
||||
glCallList(helper.displayList);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -179,7 +179,7 @@ extern void exit(int);
|
|||
glutSpecialUpFunc, glutIgnoreKeyRepeat, glutSetKeyRepeat,
|
||||
glutJoystickFunc, glutForceJoystickFunc (NOT FINALIZED!).
|
||||
**/
|
||||
#ifndef GLUT_API_VERSION /* allow this to be overriden */
|
||||
#ifndef GLUT_API_VERSION /* allow this to be overridden */
|
||||
#define GLUT_API_VERSION 3
|
||||
#endif
|
||||
|
||||
|
@ -219,7 +219,7 @@ extern void exit(int);
|
|||
|
||||
GLUT_XLIB_IMPLEMENTATION=15 mjk's GLUT 3.7 beta sync'ed with Mesa <GL/glut.h>
|
||||
**/
|
||||
#ifndef GLUT_XLIB_IMPLEMENTATION /* Allow this to be overriden. */
|
||||
#ifndef GLUT_XLIB_IMPLEMENTATION /* Allow this to be overridden. */
|
||||
#define GLUT_XLIB_IMPLEMENTATION 15
|
||||
#endif
|
||||
|
||||
|
|
|
@ -52,24 +52,55 @@ INCLUDE_DIRECTORIES(
|
|||
# Assimp library can be found, even if it is not installed system-wide yet.
|
||||
LINK_DIRECTORIES( ${Assimp_BINARY_DIR} ${AssetImporter_BINARY_DIR}/lib )
|
||||
|
||||
SOURCE_GROUP( unit FILES
|
||||
unit/CCompilerTest.c
|
||||
)
|
||||
|
||||
SET( TEST_SRCS
|
||||
SET( COMMON
|
||||
unit/utIOSystem.cpp
|
||||
unit/utIOStreamBuffer.cpp
|
||||
unit/utIssues.cpp
|
||||
unit/utAnim.cpp
|
||||
unit/AssimpAPITest.cpp
|
||||
unit/utBatchLoader.cpp
|
||||
unit/utDefaultIOStream.cpp
|
||||
unit/utFastAtof.cpp
|
||||
unit/utMetadata.cpp
|
||||
unit/SceneDiffer.h
|
||||
unit/SceneDiffer.cpp
|
||||
unit/UTLogStream.h
|
||||
unit/AbstractImportExportBase.cpp
|
||||
unit/TestIOSystem.h
|
||||
unit/TestModelFactory.h
|
||||
unit/utTypes.cpp
|
||||
unit/utVersion.cpp
|
||||
unit/utProfiler.cpp
|
||||
unit/utSharedPPData.cpp
|
||||
unit/utStringUtils.cpp
|
||||
)
|
||||
|
||||
SET( IMPORTERS
|
||||
unit/utLWSImportExport.cpp
|
||||
unit/utSMDImportExport.cpp
|
||||
unit/utglTFImportExport.cpp
|
||||
unit/utglTF2ImportExport.cpp
|
||||
unit/utHMPImportExport.cpp
|
||||
unit/utIFCImportExport.cpp
|
||||
unit/utFBXImporterExporter.cpp
|
||||
unit/utImporter.cpp
|
||||
unit/ut3DImportExport.cpp
|
||||
unit/ut3DSImportExport.cpp
|
||||
unit/utACImportExport.cpp
|
||||
unit/utAMFImportExport.cpp
|
||||
unit/utASEImportExport.cpp
|
||||
unit/utAnim.cpp
|
||||
unit/AssimpAPITest.cpp
|
||||
unit/utB3DImportExport.cpp
|
||||
unit/utBatchLoader.cpp
|
||||
unit/utD3MFImportExport.cpp
|
||||
unit/utQ3DImportExport.cpp
|
||||
unit/utSTLImportExport.cpp
|
||||
unit/utXImporterExporter.cpp
|
||||
unit/utX3DImportExport.cpp
|
||||
unit/utDXFImporterExporter.cpp
|
||||
unit/utPMXImporter.cpp
|
||||
unit/utPLYImportExport.cpp
|
||||
unit/utObjImportExport.cpp
|
||||
unit/utObjTools.cpp
|
||||
unit/utOpenGEXImportExport.cpp
|
||||
unit/utSIBImporter.cpp
|
||||
unit/utBlenderIntermediate.cpp
|
||||
unit/utBlendImportAreaLight.cpp
|
||||
unit/utBlenderImportExport.cpp
|
||||
|
@ -79,78 +110,60 @@ SET( TEST_SRCS
|
|||
unit/utColladaExportLight.cpp
|
||||
unit/utColladaImportExport.cpp
|
||||
unit/utCSMImportExport.cpp
|
||||
unit/utDefaultIOStream.cpp
|
||||
unit/utDXFImporterExporter.cpp
|
||||
unit/utFastAtof.cpp
|
||||
unit/utFBXImporterExporter.cpp
|
||||
unit/utFindDegenerates.cpp
|
||||
unit/utFindInvalidData.cpp
|
||||
unit/utFixInfacingNormals.cpp
|
||||
unit/utGenNormals.cpp
|
||||
unit/utglTFImportExport.cpp
|
||||
unit/utglTF2ImportExport.cpp
|
||||
unit/utHMPImportExport.cpp
|
||||
unit/utIFCImportExport.cpp
|
||||
unit/utImporter.cpp
|
||||
unit/utImproveCacheLocality.cpp
|
||||
unit/utIOSystem.cpp
|
||||
unit/utIOStreamBuffer.cpp
|
||||
unit/utIssues.cpp
|
||||
unit/utJoinVertices.cpp
|
||||
unit/utLimitBoneWeights.cpp
|
||||
unit/utLWSImportExport.cpp
|
||||
unit/utB3DImportExport.cpp
|
||||
)
|
||||
|
||||
SET( MATERIAL
|
||||
unit/utMaterialSystem.cpp
|
||||
)
|
||||
|
||||
SET( MATH
|
||||
unit/utMatrix3x3.cpp
|
||||
unit/utMatrix4x4.cpp
|
||||
unit/utMetadata.cpp
|
||||
unit/SceneDiffer.h
|
||||
unit/SceneDiffer.cpp
|
||||
unit/utSIBImporter.cpp
|
||||
unit/utObjImportExport.cpp
|
||||
unit/utObjTools.cpp
|
||||
unit/utOpenGEXImportExport.cpp
|
||||
unit/utPretransformVertices.cpp
|
||||
unit/utPLYImportExport.cpp
|
||||
unit/utPMXImporter.cpp
|
||||
unit/utRemoveComments.cpp
|
||||
unit/utRemoveComponent.cpp
|
||||
unit/utScenePreprocessor.cpp
|
||||
unit/utSceneCombiner.cpp
|
||||
unit/utSharedPPData.cpp
|
||||
unit/utStringUtils.cpp
|
||||
unit/utSMDImportExport.cpp
|
||||
unit/utSortByPType.cpp
|
||||
unit/utSplitLargeMeshes.cpp
|
||||
unit/utTargetAnimation.cpp
|
||||
unit/utTextureTransform.cpp
|
||||
unit/utTriangulate.cpp
|
||||
unit/utTypes.cpp
|
||||
unit/utVertexTriangleAdjacency.cpp
|
||||
unit/utVersion.cpp
|
||||
unit/utVector3.cpp
|
||||
unit/utXImporterExporter.cpp
|
||||
unit/utX3DImportExport.cpp
|
||||
unit/utD3MFImportExport.cpp
|
||||
unit/utQ3DImportExport.cpp
|
||||
unit/utSTLImportExport.cpp
|
||||
unit/utProfiler.cpp
|
||||
)
|
||||
|
||||
SET( POST_PROCESSES
|
||||
unit/utImproveCacheLocality.cpp
|
||||
unit/utFixInfacingNormals.cpp
|
||||
unit/utGenNormals.cpp
|
||||
unit/utTriangulate.cpp
|
||||
unit/utTextureTransform.cpp
|
||||
unit/utRemoveRedundantMaterials.cpp
|
||||
unit/utRemoveVCProcess.cpp
|
||||
unit/utScaleProcess.cpp
|
||||
unit/utJoinVertices.cpp
|
||||
unit/utRemoveComments.cpp
|
||||
unit/utRemoveComponent.cpp
|
||||
unit/utVertexTriangleAdjacency.cpp
|
||||
unit/utJoinVertices.cpp
|
||||
unit/utSplitLargeMeshes.cpp
|
||||
unit/utFindDegenerates.cpp
|
||||
unit/utFindInvalidData.cpp
|
||||
unit/utLimitBoneWeights.cpp
|
||||
unit/utPretransformVertices.cpp
|
||||
unit/utScenePreprocessor.cpp
|
||||
unit/utTargetAnimation.cpp
|
||||
unit/utSortByPType.cpp
|
||||
unit/utSceneCombiner.cpp
|
||||
)
|
||||
|
||||
SOURCE_GROUP( tests FILES ${TEST_SRCS} )
|
||||
SOURCE_GROUP( tests/PostProcess FILES ${POST_PROCESSES})
|
||||
SOURCE_GROUP( UnitTests\\Compiler FILES unit/CCompilerTest.c )
|
||||
SOURCE_GROUP( UnitTests\\Common FILES ${COMMON} )
|
||||
SOURCE_GROUP( UnitTests\\Importers FILES ${IMPORTERS} )
|
||||
SOURCE_GROUP( UnitTests\\Material FILES ${MATERIAL} )
|
||||
SOURCE_GROUP( UnitTests\\Math FILES ${MATH} )
|
||||
SOURCE_GROUP( UnitTests\\PostProcess FILES ${POST_PROCESSES})
|
||||
|
||||
add_executable( unit
|
||||
../contrib/gtest/src/gtest-all.cc
|
||||
unit/CCompilerTest.c
|
||||
unit/Main.cpp
|
||||
../code/Version.cpp
|
||||
${TEST_SRCS}
|
||||
${COMMON}
|
||||
${IMPORTERS}
|
||||
${MATERIAL}
|
||||
${MATH}
|
||||
${POST_PROCESSES}
|
||||
)
|
||||
|
||||
|
|
|
@ -32,7 +32,7 @@ L'utilizzo della Creative Commons non influisce su questo diritto.
|
|||
************************************************
|
||||
|
||||
This model is released under Creative Commons Licence, Attribution 2.0
|
||||
for informations see:
|
||||
for information see:
|
||||
http://creativecommons.org
|
||||
http://creativecommons.org/licenses/by/2.0/
|
||||
feel free to use and improve it.
|
||||
|
|
|
@ -1 +1 @@
|
|||
Simple models for testing importer. No desription because models are simple and created by hands.
|
||||
Simple models for testing importer. No description because models are simple and created by hand.
|
||||
|
|
|
@ -561,7 +561,7 @@ void CGLView::Enable_Textures(const bool pEnable)
|
|||
}
|
||||
|
||||
/********************************************************************/
|
||||
/*********************** Overrided functions ************************/
|
||||
/*********************** Override functions ************************/
|
||||
/********************************************************************/
|
||||
|
||||
void CGLView::initializeGL()
|
||||
|
|
|
@ -249,13 +249,13 @@ private:
|
|||
void Draw_BBox(const SBBox& pBBox);
|
||||
|
||||
/********************************************************************/
|
||||
/*********************** Overrided functions ************************/
|
||||
/*********************** Override functions ************************/
|
||||
/********************************************************************/
|
||||
|
||||
protected:
|
||||
void drawCoordSystem();
|
||||
/// \fn void initializeGL() override
|
||||
/// Overrided function for initialise OpenGL.
|
||||
/// Override function to initialise OpenGL.
|
||||
void initializeGL() override;
|
||||
|
||||
/// \fn void resizeGL(int pWidth, int pHeight) override
|
||||
|
@ -264,7 +264,7 @@ protected:
|
|||
void resizeGL(int pWidth, int pHeight) override;
|
||||
|
||||
/// \fn void paintGL() override
|
||||
/// Overrided function for rendering.
|
||||
/// Override function for rendering.
|
||||
void paintGL() override;
|
||||
|
||||
public:
|
||||
|
|
|
@ -107,7 +107,7 @@ void MainWindow::LogError(const QString& pMessage)
|
|||
}
|
||||
|
||||
/********************************************************************/
|
||||
/*********************** Overrided functions ************************/
|
||||
/*********************** Override functions ************************/
|
||||
/********************************************************************/
|
||||
|
||||
void MainWindow::mousePressEvent(QMouseEvent* pEvent)
|
||||
|
|
|
@ -65,23 +65,23 @@ private:
|
|||
void LogError(const QString& pMessage);
|
||||
|
||||
/********************************************************************/
|
||||
/*********************** Overrided functions ************************/
|
||||
/*********************** Override functions ************************/
|
||||
/********************************************************************/
|
||||
|
||||
protected:
|
||||
|
||||
/// \fn void mousePressEvent(QMouseEvent* pEvent) override
|
||||
/// Overrided function which handle mouse event "button pressed".
|
||||
/// Override function which handles mouse event "button pressed".
|
||||
/// \param [in] pEvent - pointer to event data.
|
||||
void mousePressEvent(QMouseEvent* pEvent) override;
|
||||
|
||||
/// \fn void mouseMoveEvent(QMouseEvent* pEvent) override
|
||||
/// Overrided function which handle mouse event "move".
|
||||
/// Override function which handles mouse event "move".
|
||||
/// \param [in] pEvent - pointer to event data.
|
||||
void mouseMoveEvent(QMouseEvent* pEvent) override;
|
||||
|
||||
/// \fn void keyPressEvent(QKeyEvent* pEvent) override
|
||||
/// Overrided function which handle key event "key pressed".
|
||||
/// Override function which handles key event "key pressed".
|
||||
/// \param [in] pEvent - pointer to event data.
|
||||
void keyPressEvent(QKeyEvent* pEvent) override;
|
||||
|
||||
|
|
|
@ -189,7 +189,7 @@ BEGIN
|
|||
LTEXT "Angle limit (in degrees):",IDC_STATIC,13,10,76,8
|
||||
LTEXT "The angle limit defines the maximum angle that may be between two adjacent face normals that they're smoothed together.",IDC_STATIC,13,31,253,19
|
||||
CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,0,113,278,1
|
||||
LTEXT "This setting is also used during import, but it can be overriden by single model importers to match the original look of a model as closely as possible. Examples include 3DS, ASE and LWO, all of them relying on smoothing groups and their own angle limits. ",IDC_STATIC,13,51,254,33
|
||||
LTEXT "This setting is also used during import, but it can be overridden by single model importers to match the original look of a model as closely as possible. Examples include 3DS, ASE and LWO, all of them relying on smoothing groups and their own angle limits. ",IDC_STATIC,13,51,254,33
|
||||
LTEXT "NOTE: New settings don't take effect immediately, use 'Smooth Normals' or 'Reload' to update the model.",IDC_STATIC,14,118,254,22
|
||||
CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,0,90,277,1
|
||||
END
|
||||
|
|
Loading…
Reference in New Issue