projects
/
platform
/
core
/
uifw
/
dali-demo.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Updated demos to use DALi clang-format
[platform/core/uifw/dali-demo.git]
/
examples
/
rendering-basic-pbr
/
obj-loader.cpp
diff --git
a/examples/rendering-basic-pbr/obj-loader.cpp
b/examples/rendering-basic-pbr/obj-loader.cpp
index
82ffa6a
..
32947e1
100644
(file)
--- a/
examples/rendering-basic-pbr/obj-loader.cpp
+++ b/
examples/rendering-basic-pbr/obj-loader.cpp
@@
-1,5
+1,5
@@
/*
/*
- * Copyright (c) 20
17
Samsung Electronics Co., Ltd.
+ * Copyright (c) 20
20
Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@
-20,24
+20,23
@@
// EXTERNAL INCLUDES
#include <dali/integration-api/debug.h>
// EXTERNAL INCLUDES
#include <dali/integration-api/debug.h>
-#include <sstream>
#include <string.h>
#include <string.h>
+#include <sstream>
namespace PbrDemo
{
namespace PbrDemo
{
-
namespace
{
const int MAX_POINT_INDICES = 4;
}
ObjLoader::ObjLoader()
namespace
{
const int MAX_POINT_INDICES = 4;
}
ObjLoader::ObjLoader()
-: mSceneLoaded(
false
),
- mMaterialLoaded(
false
),
- mHasTextureUv(
false
),
- mHasDiffuseMap(
false
),
- mHasNormalMap(
false
),
- mHasSpecularMap(
false
)
+: mSceneLoaded(
false
),
+ mMaterialLoaded(
false
),
+ mHasTextureUv(
false
),
+ mHasDiffuseMap(
false
),
+ mHasNormalMap(
false
),
+ mHasSpecularMap(
false
)
{
mSceneAABB.Init();
}
{
mSceneAABB.Init();
}
@@
-57,17
+56,16
@@
bool ObjLoader::IsMaterialLoaded()
return mMaterialLoaded;
}
return mMaterialLoaded;
}
-void ObjLoader::CalculateHardFaceNormals( const Dali::Vector<Vector3>& points, Dali::Vector<TriIndex>& triangles,
- Dali::Vector<Vector3>& normals )
+void ObjLoader::CalculateHardFaceNormals(const Dali::Vector<Vector3>& points, Dali::Vector<TriIndex>& triangles, Dali::Vector<Vector3>& normals)
{
{
- int numFaceVertices = 3 * triangles.Size();
//Vertices per face, as each vertex has different normals instance for each face.
- int normalIndex
= 0;
//Tracks progress through the array of normals.
+ int numFaceVertices = 3 * triangles.Size(); //Vertices per face, as each vertex has different normals instance for each face.
+ int normalIndex
= 0;
//Tracks progress through the array of normals.
normals.Clear();
normals.Clear();
- normals.Resize(
numFaceVertices
);
+ normals.Resize(
numFaceVertices
);
//For each triangle, calculate the normal by crossing two vectors on the triangle's plane.
//For each triangle, calculate the normal by crossing two vectors on the triangle's plane.
- for(
unsigned long i = 0; i < triangles.Size(); i++
)
+ for(
unsigned long i = 0; i < triangles.Size(); i++
)
{
//Triangle vertices.
const Vector3& v0 = points[triangles[i].pointIndex[0]];
{
//Triangle vertices.
const Vector3& v0 = points[triangles[i].pointIndex[0]];
@@
-83,25
+81,24
@@
void ObjLoader::CalculateHardFaceNormals( const Dali::Vector<Vector3>& points, D
normalVector.Normalize();
//Assign normal index to triangle vertex and set the normal vector to the list of normals.
normalVector.Normalize();
//Assign normal index to triangle vertex and set the normal vector to the list of normals.
- for(
unsigned long j = 0; j < 3; j++, normalIndex++
)
+ for(
unsigned long j = 0; j < 3; j++, normalIndex++
)
{
triangles[i].normalIndex[j] = normalIndex;
{
triangles[i].normalIndex[j] = normalIndex;
- normals[normalIndex] = normalVector;
+ normals[normalIndex]
= normalVector;
}
}
}
}
}
}
-void ObjLoader::CalculateSoftFaceNormals( const Dali::Vector<Vector3>& points, Dali::Vector<TriIndex>& triangles,
- Dali::Vector<Vector3>& normals )
+void ObjLoader::CalculateSoftFaceNormals(const Dali::Vector<Vector3>& points, Dali::Vector<TriIndex>& triangles, Dali::Vector<Vector3>& normals)
{
{
- int normalIndex = 0;
//Tracks progress through the array of normals.
+ int normalIndex = 0; //Tracks progress through the array of normals.
normals.Clear();
normals.Clear();
- normals.Resize(
points.Size() );
//One (averaged) normal per point.
+ normals.Resize(
points.Size());
//One (averaged) normal per point.
//For each triangle, calculate the normal by crossing two vectors on the triangle's plane
//We then add the triangle's normal to the cumulative normals at each point of it
//For each triangle, calculate the normal by crossing two vectors on the triangle's plane
//We then add the triangle's normal to the cumulative normals at each point of it
- for(
unsigned long i = 0; i < triangles.Size(); i++
)
+ for(
unsigned long i = 0; i < triangles.Size(); i++
)
{
//Triangle points.
const Vector3& v0 = points[triangles[i].pointIndex[0]];
{
//Triangle points.
const Vector3& v0 = points[triangles[i].pointIndex[0]];
@@
-116,16
+113,16
@@
void ObjLoader::CalculateSoftFaceNormals( const Dali::Vector<Vector3>& points, D
Vector3 normalVector = edge1.Cross(edge2);
//Add this triangle's normal to the cumulative normal of each constituent triangle point and set the index of the normal accordingly.
Vector3 normalVector = edge1.Cross(edge2);
//Add this triangle's normal to the cumulative normal of each constituent triangle point and set the index of the normal accordingly.
- for(
unsigned long j = 0; j < 3; j++)
+ for(unsigned long j = 0; j < 3; j++)
{
{
- normalIndex = triangles[i].pointIndex[j];
+ normalIndex
= triangles[i].pointIndex[j];
triangles[i].normalIndex[j] = normalIndex; //Normal index matches up to vertex index, as one normal per vertex.
normals[normalIndex] += normalVector;
}
}
//Normalise the normals.
triangles[i].normalIndex[j] = normalIndex; //Normal index matches up to vertex index, as one normal per vertex.
normals[normalIndex] += normalVector;
}
}
//Normalise the normals.
- for(
unsigned long i = 0; i < normals.Size(); i++
)
+ for(
unsigned long i = 0; i < normals.Size(); i++
)
{
normals[i].Normalize();
}
{
normals[i].Normalize();
}
@@
-135,10
+132,10
@@
void ObjLoader::CalculateTangentFrame()
{
//Reset tangent vector to hold new values.
mTangents.Clear();
{
//Reset tangent vector to hold new values.
mTangents.Clear();
- mTangents.Resize(
mNormals.Size()
);
+ mTangents.Resize(
mNormals.Size()
);
//For each triangle, calculate the tangent vector and then add it to the total tangent vector of each normal.
//For each triangle, calculate the tangent vector and then add it to the total tangent vector of each normal.
- for
( unsigned long a = 0; a < mTriangles.Size(); a++
)
+ for
(unsigned long a = 0; a < mTriangles.Size(); a++
)
{
Vector3 tangentVector;
{
Vector3 tangentVector;
@@
-162,9
+159,9
@@
void ObjLoader::CalculateTangentFrame()
// as a weight of the tangent vector and it is fixed when it is normalised.
float f = (deltaU1 * deltaV2 - deltaU2 * deltaV1);
// as a weight of the tangent vector and it is fixed when it is normalised.
float f = (deltaU1 * deltaV2 - deltaU2 * deltaV1);
- tangentVector.x = f * (
deltaV2 * edge1.x - deltaV1 * edge2.x
);
- tangentVector.y = f * (
deltaV2 * edge1.y - deltaV1 * edge2.y
);
- tangentVector.z = f * (
deltaV2 * edge1.z - deltaV1 * edge2.z
);
+ tangentVector.x = f * (
deltaV2 * edge1.x - deltaV1 * edge2.x
);
+ tangentVector.y = f * (
deltaV2 * edge1.y - deltaV1 * edge2.y
);
+ tangentVector.z = f * (
deltaV2 * edge1.z - deltaV1 * edge2.z
);
mTangents[mTriangles[a].normalIndex[0]] += tangentVector;
mTangents[mTriangles[a].normalIndex[1]] += tangentVector;
mTangents[mTriangles[a].normalIndex[0]] += tangentVector;
mTangents[mTriangles[a].normalIndex[1]] += tangentVector;
@@
-172,7
+169,7
@@
void ObjLoader::CalculateTangentFrame()
}
//Orthogonalize tangents.
}
//Orthogonalize tangents.
- for
( unsigned long a = 0; a < mTangents.Size(); a++
)
+ for
(unsigned long a = 0; a < mTangents.Size(); a++
)
{
const Vector3& n = mNormals[a];
const Vector3& t = mTangents[a];
{
const Vector3& n = mNormals[a];
const Vector3& t = mTangents[a];
@@
-183,24
+180,24
@@
void ObjLoader::CalculateTangentFrame()
}
}
}
}
-void ObjLoader::CenterAndScale(
bool center, Dali::Vector<Vector3>& points
)
+void ObjLoader::CenterAndScale(
bool center, Dali::Vector<Vector3>& points
)
{
BoundingVolume newAABB;
Vector3 sceneSize = GetSize();
float biggestDimension = sceneSize.x;
{
BoundingVolume newAABB;
Vector3 sceneSize = GetSize();
float biggestDimension = sceneSize.x;
- if(
sceneSize.y > biggestDimension
)
+ if(
sceneSize.y > biggestDimension
)
{
biggestDimension = sceneSize.y;
}
{
biggestDimension = sceneSize.y;
}
- if(
sceneSize.z > biggestDimension
)
+ if(
sceneSize.z > biggestDimension
)
{
biggestDimension = sceneSize.z;
}
newAABB.Init();
{
biggestDimension = sceneSize.z;
}
newAABB.Init();
- for(
unsigned int ui = 0; ui < points.Size(); ++ui
)
+ for(
unsigned int ui = 0; ui < points.Size(); ++ui
)
{
points[ui] = points[ui] - GetCenter();
points[ui] = points[ui] / biggestDimension;
{
points[ui] = points[ui] - GetCenter();
points[ui] = points[ui] / biggestDimension;
@@
-210,15
+207,15
@@
void ObjLoader::CenterAndScale( bool center, Dali::Vector<Vector3>& points )
mSceneAABB = newAABB;
}
mSceneAABB = newAABB;
}
-void ObjLoader::CreateGeometryArray(
Dali::Vector<Vector3>&
positions,
-
Dali::Vector<Vector3>&
normals,
-
Dali::Vector<Vector3>&
tangents,
-
Dali::Vector<Vector2>&
textures,
-
Dali::Vector<unsigned short>
& indices,
-
bool useSoftNormals
)
+void ObjLoader::CreateGeometryArray(
Dali::Vector<Vector3>&
positions,
+
Dali::Vector<Vector3>&
normals,
+
Dali::Vector<Vector3>&
tangents,
+
Dali::Vector<Vector2>&
textures,
+
Dali::Vector<unsigned short>
& indices,
+
bool useSoftNormals
)
{
//We must calculate the tangents if they weren't supplied, or if they don't match up.
{
//We must calculate the tangents if they weren't supplied, or if they don't match up.
- bool mustCalculateTangents = (
mTangents.Size() == 0 ) || ( mTangents.Size() != mNormals.Size()
);
+ bool mustCalculateTangents = (
mTangents.Size() == 0) || (mTangents.Size() != mNormals.Size()
);
//However, we don't need to do this if the object doesn't use textures to begin with.
mustCalculateTangents &= mHasTextureUv;
//However, we don't need to do this if the object doesn't use textures to begin with.
mustCalculateTangents &= mHasTextureUv;
@@
-227,44
+224,44
@@
void ObjLoader::CreateGeometryArray( Dali::Vector<Vector3>& positions,
// Use the normals provided by the file to make the tangent calculation per normal,
// the correct results depends of normal generated by file, otherwise we need to recalculate
// the normal programmatically.
// Use the normals provided by the file to make the tangent calculation per normal,
// the correct results depends of normal generated by file, otherwise we need to recalculate
// the normal programmatically.
- if(
( ( mNormals.Size() == 0 ) && mustCalculateTangents ) || !useSoftNormals
)
+ if(
((mNormals.Size() == 0) && mustCalculateTangents) || !useSoftNormals
)
{
{
- if(
useSoftNormals
)
+ if(
useSoftNormals
)
{
{
- CalculateSoftFaceNormals(
mPoints, mTriangles, mNormals
);
+ CalculateSoftFaceNormals(
mPoints, mTriangles, mNormals
);
}
else
{
}
else
{
- CalculateHardFaceNormals(
mPoints, mTriangles, mNormals
);
+ CalculateHardFaceNormals(
mPoints, mTriangles, mNormals
);
}
}
}
}
- if(
mHasTextureUv && mustCalculateTangents
)
+ if(
mHasTextureUv && mustCalculateTangents
)
{
CalculateTangentFrame();
}
bool mapsCorrespond; //True if the sizes of the arrays necessary to draw the object match.
{
CalculateTangentFrame();
}
bool mapsCorrespond; //True if the sizes of the arrays necessary to draw the object match.
- if
( mHasTextureUv
)
+ if
(mHasTextureUv
)
{
{
- mapsCorrespond = (
mPoints.Size() == mTextureUv.Size() ) && ( mTextureUv.Size() == mNormals.Size()
);
+ mapsCorrespond = (
mPoints.Size() == mTextureUv.Size()) && (mTextureUv.Size() == mNormals.Size()
);
}
else
{
}
else
{
- mapsCorrespond = (
mPoints.Size() == mNormals.Size()
);
+ mapsCorrespond = (
mPoints.Size() == mNormals.Size()
);
}
//Check the number of points textures and normals
}
//Check the number of points textures and normals
- if
( mapsCorrespond
)
+ if
(mapsCorrespond
)
{
{
- int numPoints = mPoints.Size();
+ int numPoints
= mPoints.Size();
int numIndices = 3 * mTriangles.Size();
int numIndices = 3 * mTriangles.Size();
- positions.Resize(
numPoints
);
- normals.Resize(
numPoints
);
- tangents.Resize(
numPoints
);
- textures.Resize(
numPoints
);
- indices.Resize(
numIndices
);
+ positions.Resize(
numPoints
);
+ normals.Resize(
numPoints
);
+ tangents.Resize(
numPoints
);
+ textures.Resize(
numPoints
);
+ indices.Resize(
numIndices
);
//We create the vertices array. For now we just copy points info
positions = mPoints;
//We create the vertices array. For now we just copy points info
positions = mPoints;
@@
-272,16
+269,16
@@
void ObjLoader::CreateGeometryArray( Dali::Vector<Vector3>& positions,
int indiceIndex = 0;
//We copy the indices
int indiceIndex = 0;
//We copy the indices
- for
( unsigned int ui = 0 ; ui < mTriangles.Size() ; ++ui
)
+ for
(unsigned int ui = 0; ui < mTriangles.Size(); ++ui
)
{
{
- for
( int j = 0 ; j < 3 ; ++j
)
+ for
(int j = 0; j < 3; ++j
)
{
indices[indiceIndex] = mTriangles[ui].pointIndex[j];
indiceIndex++;
normals[mTriangles[ui].pointIndex[j]] = mNormals[mTriangles[ui].normalIndex[j]];
{
indices[indiceIndex] = mTriangles[ui].pointIndex[j];
indiceIndex++;
normals[mTriangles[ui].pointIndex[j]] = mNormals[mTriangles[ui].normalIndex[j]];
- if
( mHasTextureUv
)
+ if
(mHasTextureUv
)
{
textures[mTriangles[ui].pointIndex[j]] = mTextureUv[mTriangles[ui].textureIndex[j]];
tangents[mTriangles[ui].pointIndex[j]] = mTangents[mTriangles[ui].normalIndex[j]];
{
textures[mTriangles[ui].pointIndex[j]] = mTextureUv[mTriangles[ui].textureIndex[j]];
tangents[mTriangles[ui].pointIndex[j]] = mTangents[mTriangles[ui].normalIndex[j]];
@@
-292,22
+289,22
@@
void ObjLoader::CreateGeometryArray( Dali::Vector<Vector3>& positions,
else
{
int numVertices = 3 * mTriangles.Size();
else
{
int numVertices = 3 * mTriangles.Size();
- positions.Resize(
numVertices
);
- normals.Resize(
numVertices
);
- textures.Resize(
numVertices
);
- tangents.Resize(
numVertices
);
+ positions.Resize(
numVertices
);
+ normals.Resize(
numVertices
);
+ textures.Resize(
numVertices
);
+ tangents.Resize(
numVertices
);
int index = 0;
//We have to normalize the arrays so we can draw we just one index array
int index = 0;
//We have to normalize the arrays so we can draw we just one index array
- for(
unsigned int ui = 0; ui < mTriangles.Size(); ++ui
)
+ for(
unsigned int ui = 0; ui < mTriangles.Size(); ++ui
)
{
{
- for
( int j = 0 ; j < 3 ; ++j
)
+ for
(int j = 0; j < 3; ++j
)
{
positions[index] = mPoints[mTriangles[ui].pointIndex[j]];
{
positions[index] = mPoints[mTriangles[ui].pointIndex[j]];
- normals[index] = mNormals[mTriangles[ui].normalIndex[j]];
+ normals[index]
= mNormals[mTriangles[ui].normalIndex[j]];
- if(
mHasTextureUv
)
+ if(
mHasTextureUv
)
{
textures[index] = mTextureUv[mTriangles[ui].textureIndex[j]];
tangents[index] = mTangents[mTriangles[ui].normalIndex[j]];
{
textures[index] = mTextureUv[mTriangles[ui].textureIndex[j]];
tangents[index] = mTangents[mTriangles[ui].normalIndex[j]];
@@
-319,95
+316,94
@@
void ObjLoader::CreateGeometryArray( Dali::Vector<Vector3>& positions,
}
}
}
}
-bool ObjLoader::LoadObject(
char* objBuffer, std::streampos fileSize
)
+bool ObjLoader::LoadObject(
char* objBuffer, std::streampos fileSize
)
{
{
- Vector3 point;
- Vector2 texture;
+ Vector3
point;
+ Vector2
texture;
std::string vet[MAX_POINT_INDICES], name;
std::string vet[MAX_POINT_INDICES], name;
- int ptIdx[MAX_POINT_INDICES];
- int nrmIdx[MAX_POINT_INDICES];
- int texIdx[MAX_POINT_INDICES];
- TriIndex
triangle,
triangle2;
- int pntAcum = 0, texAcum = 0, nrmAcum = 0;
- bool
iniObj
= false;
- bool hasTexture = false;
- int
face
= 0;
+ int
ptIdx[MAX_POINT_INDICES];
+ int
nrmIdx[MAX_POINT_INDICES];
+ int
texIdx[MAX_POINT_INDICES];
+ TriIndex
triangle,
triangle2;
+ int
pntAcum = 0, texAcum = 0, nrmAcum = 0;
+ bool
iniObj
= false;
+ bool
hasTexture = false;
+ int
face
= 0;
//Init AABB for the file
mSceneAABB.Init();
std::string strMatActual;
//Init AABB for the file
mSceneAABB.Init();
std::string strMatActual;
- std::string
input( objBuffer, fileSize
);
+ std::string
input(objBuffer, fileSize
);
std::istringstream ss(input);
std::istringstream ss(input);
- ss.imbue( std::locale( "C" ) );
-
+ ss.imbue(std::locale("C"));
std::string line;
std::string line;
- std::getline(
ss, line
);
+ std::getline(
ss, line
);
- while
( std::getline( ss, line )
)
+ while
(std::getline(ss, line)
)
{
{
- std::istringstream isline(
line, std::istringstream::in
);
- std::string tag;
+ std::istringstream isline(
line, std::istringstream::in
);
+ std::string
tag;
isline >> tag;
isline >> tag;
- if
( tag == "v"
)
+ if
(tag == "v"
)
{
//Two different objects in the same file
isline >> point.x;
isline >> point.y;
isline >> point.z;
{
//Two different objects in the same file
isline >> point.x;
isline >> point.y;
isline >> point.z;
- mPoints.PushBack(
point
);
+ mPoints.PushBack(
point
);
- mSceneAABB.ConsiderNewPointInVolume(
point
);
+ mSceneAABB.ConsiderNewPointInVolume(
point
);
}
}
- else if
( tag == "vn"
)
+ else if
(tag == "vn"
)
{
isline >> point.x;
isline >> point.y;
isline >> point.z;
{
isline >> point.x;
isline >> point.y;
isline >> point.z;
- mNormals.PushBack(
point
);
+ mNormals.PushBack(
point
);
}
}
- else if
( tag == "#_#tangent"
)
+ else if
(tag == "#_#tangent"
)
{
isline >> point.x;
isline >> point.y;
isline >> point.z;
{
isline >> point.x;
isline >> point.y;
isline >> point.z;
- mTangents.PushBack(
point
);
+ mTangents.PushBack(
point
);
}
}
- else if
( tag == "#_#binormal"
)
+ else if
(tag == "#_#binormal"
)
{
isline >> point.x;
isline >> point.y;
isline >> point.z;
{
isline >> point.x;
isline >> point.y;
isline >> point.z;
- mBiTangents.PushBack(
point
);
+ mBiTangents.PushBack(
point
);
}
}
- else if
( tag == "vt"
)
+ else if
(tag == "vt"
)
{
isline >> texture.x;
isline >> texture.y;
{
isline >> texture.x;
isline >> texture.y;
- texture.y = 1.0
-
texture.y;
- mTextureUv.PushBack(
texture
);
+ texture.y = 1.0
-
texture.y;
+ mTextureUv.PushBack(
texture
);
}
}
- else if
( tag == "#_#vt1"
)
+ else if
(tag == "#_#vt1"
)
{
isline >> texture.x;
isline >> texture.y;
{
isline >> texture.x;
isline >> texture.y;
- texture.y = 1.0
-
texture.y;
- mTextureUv2.PushBack(
texture
);
+ texture.y = 1.0
-
texture.y;
+ mTextureUv2.PushBack(
texture
);
}
}
- else if
( tag == "s"
)
+ else if
(tag == "s"
)
{
}
{
}
- else if
( tag == "f"
)
+ else if
(tag == "f"
)
{
{
- if
( !iniObj
)
+ if
(!iniObj
)
{
//name assign
{
//name assign
@@
-415,7
+411,7
@@
bool ObjLoader::LoadObject( char* objBuffer, std::streampos fileSize )
}
int numIndices = 0;
}
int numIndices = 0;
- while(
( numIndices < MAX_POINT_INDICES ) && ( isline >> vet[numIndices] )
)
+ while(
(numIndices < MAX_POINT_INDICES) && (isline >> vet[numIndices])
)
{
numIndices++;
}
{
numIndices++;
}
@@
-424,26
+420,26
@@
bool ObjLoader::LoadObject( char* objBuffer, std::streampos fileSize )
char separator;
char separator2;
char separator;
char separator2;
- const char
* subString; //A pointer to the position in the string as we move through it.
+ const char* subString; //A pointer to the position in the string as we move through it.
- subString = strstr(
vet[0].c_str(),"/"
); //Search for the first '/'
+ subString = strstr(
vet[0].c_str(), "/"
); //Search for the first '/'
- if(
subString
)
+ if(
subString
)
{
{
- if(
subString[1] == '/'
) // Of the form A//C, so has points and normals but no texture coordinates.
+ if(
subString[1] == '/'
) // Of the form A//C, so has points and normals but no texture coordinates.
{
{
- for(
int i = 0
; i < numIndices; i++)
+ for(
int i = 0
; i < numIndices; i++)
{
{
- std::istringstream isindex(
vet[i]
);
+ std::istringstream isindex(
vet[i]
);
isindex >> ptIdx[i] >> separator >> separator2 >> nrmIdx[i];
texIdx[i] = 0;
}
}
isindex >> ptIdx[i] >> separator >> separator2 >> nrmIdx[i];
texIdx[i] = 0;
}
}
- else if(
strstr( subString, "/" )
) // Of the form A/B/C, so has points, textures and normals.
+ else if(
strstr(subString, "/")
) // Of the form A/B/C, so has points, textures and normals.
{
{
- for(
int i = 0 ; i < numIndices; i++
)
+ for(
int i = 0; i < numIndices; i++
)
{
{
- std::istringstream isindex(
vet[i]
);
+ std::istringstream isindex(
vet[i]
);
isindex >> ptIdx[i] >> separator >> texIdx[i] >> separator2 >> nrmIdx[i];
}
isindex >> ptIdx[i] >> separator >> texIdx[i] >> separator2 >> nrmIdx[i];
}
@@
-451,9
+447,9
@@
bool ObjLoader::LoadObject( char* objBuffer, std::streampos fileSize )
}
else // Of the form A/B, so has points and textures but no normals.
{
}
else // Of the form A/B, so has points and textures but no normals.
{
- for(
int i = 0 ; i < numIndices; i++
)
+ for(
int i = 0; i < numIndices; i++
)
{
{
- std::istringstream isindex(
vet[i]
);
+ std::istringstream isindex(
vet[i]
);
isindex >> ptIdx[i] >> separator >> texIdx[i];
nrmIdx[i] = 0;
}
isindex >> ptIdx[i] >> separator >> texIdx[i];
nrmIdx[i] = 0;
}
@@
-463,9
+459,9
@@
bool ObjLoader::LoadObject( char* objBuffer, std::streampos fileSize )
}
else // Simply of the form A, as in, point indices only.
{
}
else // Simply of the form A, as in, point indices only.
{
- for(
int i = 0 ; i < numIndices; i++
)
+ for(
int i = 0; i < numIndices; i++
)
{
{
- std::istringstream isindex(
vet[i]
);
+ std::istringstream isindex(
vet[i]
);
isindex >> ptIdx[i];
texIdx[i] = 0;
nrmIdx[i] = 0;
isindex >> ptIdx[i];
texIdx[i] = 0;
nrmIdx[i] = 0;
@@
-473,58
+469,58
@@
bool ObjLoader::LoadObject( char* objBuffer, std::streampos fileSize )
}
//If it is a triangle
}
//If it is a triangle
- if(
numIndices == 3
)
+ if(
numIndices == 3
)
{
{
- for(
int i = 0 ; i < 3; i++
)
+ for(
int i = 0; i < 3; i++
)
{
{
- triangle.pointIndex[i] = ptIdx[i] - 1 - pntAcum;
- triangle.normalIndex[i] = nrmIdx[i] - 1 - nrmAcum;
+ triangle.pointIndex[i]
= ptIdx[i] - 1 - pntAcum;
+ triangle.normalIndex[i]
= nrmIdx[i] - 1 - nrmAcum;
triangle.textureIndex[i] = texIdx[i] - 1 - texAcum;
}
triangle.textureIndex[i] = texIdx[i] - 1 - texAcum;
}
- mTriangles.PushBack(
triangle
);
+ mTriangles.PushBack(
triangle
);
face++;
}
//If on the other hand it is a quad, we will create two triangles
face++;
}
//If on the other hand it is a quad, we will create two triangles
- else if(
numIndices == 4
)
+ else if(
numIndices == 4
)
{
{
- for(
int i = 0 ; i < 3; i++
)
+ for(
int i = 0; i < 3; i++
)
{
{
- triangle.pointIndex[i] = ptIdx[i] - 1 - pntAcum;
- triangle.normalIndex[i] = nrmIdx[i] - 1 - nrmAcum;
+ triangle.pointIndex[i]
= ptIdx[i] - 1 - pntAcum;
+ triangle.normalIndex[i]
= nrmIdx[i] - 1 - nrmAcum;
triangle.textureIndex[i] = texIdx[i] - 1 - texAcum;
}
triangle.textureIndex[i] = texIdx[i] - 1 - texAcum;
}
- mTriangles.PushBack(
triangle
);
+ mTriangles.PushBack(
triangle
);
face++;
face++;
- for(
int i = 0 ; i < 3; i++
)
+ for(
int i = 0; i < 3; i++
)
{
{
- int idx
= ( i + 2
) % numIndices;
- triangle2.pointIndex[i] = ptIdx[idx] - 1 - pntAcum;
- triangle2.normalIndex[i] = nrmIdx[idx] - 1 - nrmAcum;
+ int idx
= (i + 2
) % numIndices;
+ triangle2.pointIndex[i]
= ptIdx[idx] - 1 - pntAcum;
+ triangle2.normalIndex[i]
= nrmIdx[idx] - 1 - nrmAcum;
triangle2.textureIndex[i] = texIdx[idx] - 1 - texAcum;
}
triangle2.textureIndex[i] = texIdx[idx] - 1 - texAcum;
}
- mTriangles.PushBack(
triangle2
);
+ mTriangles.PushBack(
triangle2
);
face++;
}
}
face++;
}
}
- else if
( tag == "usemtl"
)
+ else if
(tag == "usemtl"
)
{
isline >> strMatActual;
}
{
isline >> strMatActual;
}
- else if
( tag == "mtllib"
)
+ else if
(tag == "mtllib"
)
{
isline >> strMatActual;
}
{
isline >> strMatActual;
}
- else if
( tag == "g"
)
+ else if
(tag == "g"
)
{
isline >> name;
}
}
{
isline >> name;
}
}
- if
( iniObj
)
+ if
(iniObj
)
{
{
- CenterAndScale(
true, mPoints
);
- mSceneLoaded = true;
+ CenterAndScale(
true, mPoints
);
+ mSceneLoaded
= true;
mHasTextureUv = hasTexture;
return true;
}
mHasTextureUv = hasTexture;
return true;
}
@@
-532,65
+528,65
@@
bool ObjLoader::LoadObject( char* objBuffer, std::streampos fileSize )
return false;
}
return false;
}
-void ObjLoader::LoadMaterial(
char*
objBuffer,
-
std::streampos fileSize,
-
std::string&
diffuseTextureUrl,
-
std::string&
normalTextureUrl,
-
std::string& glossTextureUrl
)
+void ObjLoader::LoadMaterial(
char*
objBuffer,
+ std::streampos fileSize,
+
std::string&
diffuseTextureUrl,
+
std::string&
normalTextureUrl,
+
std::string& glossTextureUrl
)
{
{
- float fR,
fG,
fB;
+ float fR,
fG,
fB;
std::string info;
std::string info;
- std::string input = objBuffer;
+ std::string
input = objBuffer;
std::istringstream ss(input);
ss.imbue(std::locale("C"));
std::string line;
std::istringstream ss(input);
ss.imbue(std::locale("C"));
std::string line;
- std::getline(
ss, line
);
+ std::getline(
ss, line
);
- while
( std::getline( ss, line )
)
+ while
(std::getline(ss, line)
)
{
{
- std::istringstream isline(
line, std::istringstream::in
);
- std::string tag;
+ std::istringstream isline(
line, std::istringstream::in
);
+ std::string
tag;
isline >> tag;
isline >> tag;
- if
( tag == "newmtl" )
//name of the material
+ if
(tag == "newmtl")
//name of the material
{
isline >> info;
}
{
isline >> info;
}
- else if
( tag == "Ka"
) //ambient color
+ else if
(tag == "Ka"
) //ambient color
{
isline >> fR >> fG >> fB;
}
{
isline >> fR >> fG >> fB;
}
- else if
( tag == "Kd"
) //diffuse color
+ else if
(tag == "Kd"
) //diffuse color
{
isline >> fR >> fG >> fB;
}
{
isline >> fR >> fG >> fB;
}
- else if
( tag == "Ks"
) //specular color
+ else if
(tag == "Ks"
) //specular color
{
isline >> fR >> fG >> fB;
}
{
isline >> fR >> fG >> fB;
}
- else if
( tag == "Tf"
) //color
+ else if
(tag == "Tf"
) //color
{
}
{
}
- else if
( tag == "Ni"
)
+ else if
(tag == "Ni"
)
{
}
{
}
- else if
( tag == "map_Kd"
)
+ else if
(tag == "map_Kd"
)
{
isline >> info;
diffuseTextureUrl = info;
{
isline >> info;
diffuseTextureUrl = info;
- mHasDiffuseMap = true;
+ mHasDiffuseMap
= true;
}
}
- else if
( tag == "bump"
)
+ else if
(tag == "bump"
)
{
isline >> info;
normalTextureUrl = info;
{
isline >> info;
normalTextureUrl = info;
- mHasNormalMap = true;
+ mHasNormalMap
= true;
}
}
- else if
( tag == "map_Ks"
)
+ else if
(tag == "map_Ks"
)
{
isline >> info;
glossTextureUrl = info;
{
isline >> info;
glossTextureUrl = info;
@@
-601,59
+597,59
@@
void ObjLoader::LoadMaterial( char* objBuffer,
mMaterialLoaded = true;
}
mMaterialLoaded = true;
}
-Geometry ObjLoader::CreateGeometry(
int objectProperties, bool useSoftNormals
)
+Geometry ObjLoader::CreateGeometry(
int objectProperties, bool useSoftNormals
)
{
Geometry surface = Geometry::New();
{
Geometry surface = Geometry::New();
- Dali::Vector<Vector3> positions;
- Dali::Vector<Vector3> normals;
- Dali::Vector<Vector3> tangents;
- Dali::Vector<Vector2> textures;
+ Dali::Vector<Vector3>
positions;
+ Dali::Vector<Vector3>
normals;
+ Dali::Vector<Vector3>
tangents;
+ Dali::Vector<Vector2>
textures;
Dali::Vector<unsigned short> indices;
Dali::Vector<unsigned short> indices;
- CreateGeometryArray(
positions, normals, tangents, textures, indices, useSoftNormals
);
+ CreateGeometryArray(
positions, normals, tangents, textures, indices, useSoftNormals
);
//All vertices need at least Position and Normal
Property::Map positionMap;
//All vertices need at least Position and Normal
Property::Map positionMap;
- positionMap["aPosition"] = Property::VECTOR3;
- VertexBuffer positionBuffer = VertexBuffer::New(
positionMap
);
- positionBuffer.SetData(
positions.Begin(), positions.Count()
);
+ positionMap["aPosition"]
= Property::VECTOR3;
+ VertexBuffer positionBuffer = VertexBuffer::New(
positionMap
);
+ positionBuffer.SetData(
positions.Begin(), positions.Count()
);
Property::Map normalMap;
Property::Map normalMap;
- normalMap["aNormal"] = Property::VECTOR3;
- VertexBuffer normalBuffer = VertexBuffer::New(
normalMap
);
- normalBuffer.SetData(
normals.Begin(), normals.Count()
);
+ normalMap["aNormal"]
= Property::VECTOR3;
+ VertexBuffer normalBuffer = VertexBuffer::New(
normalMap
);
+ normalBuffer.SetData(
normals.Begin(), normals.Count()
);
- surface.AddVertexBuffer(
positionBuffer
);
- surface.AddVertexBuffer(
normalBuffer
);
+ surface.AddVertexBuffer(
positionBuffer
);
+ surface.AddVertexBuffer(
normalBuffer
);
//Some need tangent
//Some need tangent
- if(
( objectProperties & TANGENTS ) && mHasTextureUv
)
+ if(
(objectProperties & TANGENTS) && mHasTextureUv
)
{
Property::Map tangentMap;
{
Property::Map tangentMap;
- tangentMap["aTangent"] = Property::VECTOR3;
- VertexBuffer tangentBuffer = VertexBuffer::New(
tangentMap
);
- tangentBuffer.SetData(
tangents.Begin(), tangents.Count()
);
+ tangentMap["aTangent"]
= Property::VECTOR3;
+ VertexBuffer tangentBuffer = VertexBuffer::New(
tangentMap
);
+ tangentBuffer.SetData(
tangents.Begin(), tangents.Count()
);
- surface.AddVertexBuffer(
tangentBuffer
);
+ surface.AddVertexBuffer(
tangentBuffer
);
}
//Some need texture coordinates
}
//Some need texture coordinates
- if(
( objectProperties & TEXTURE_COORDINATES ) && mHasTextureUv
)
+ if(
(objectProperties & TEXTURE_COORDINATES) && mHasTextureUv
)
{
Property::Map textCoordMap;
{
Property::Map textCoordMap;
- textCoordMap["aTexCoord"] = Property::VECTOR2;
- VertexBuffer texCoordBuffer = VertexBuffer::New(
textCoordMap
);
- texCoordBuffer.SetData(
textures.Begin(), textures.Count()
);
+ textCoordMap["aTexCoord"]
= Property::VECTOR2;
+ VertexBuffer texCoordBuffer = VertexBuffer::New(
textCoordMap
);
+ texCoordBuffer.SetData(
textures.Begin(), textures.Count()
);
- surface.AddVertexBuffer(
texCoordBuffer
);
+ surface.AddVertexBuffer(
texCoordBuffer
);
}
//If indices are required, we set them.
}
//If indices are required, we set them.
- if
( indices.Size()
)
+ if
(indices.Size()
)
{
{
- surface.SetIndexBuffer
( &indices[0], indices.Size()
);
+ surface.SetIndexBuffer
(&indices[0], indices.Size()
);
}
return surface;
}
return surface;