Panagiotis Christopoulos Charitos 15 anni fa
parent
commit
1e08a0c28b

+ 4 - 3
blenderscripts/main.py

@@ -29,10 +29,11 @@ for obj in objs:
 	mi = mesh.Initializer()
 	
 	mi.blMesh = mesh.getBlMeshFromBlObj(obj)
-	mi.blSkeleton = skeleton.GetSkeleton(obj)
-	mi.saveDir = "/home/godlike/src/anki/models/imp/"
+	#mi.blSkeleton = skeleton.GetSkeleton(obj)
+	mi.saveDir = "/home/godlike/src/anki/maps/cave/"
 	#mtl = GetMaterial( mi.mesh )
-	mi.mtlName = "models/imp/imp.mtl"
+	mi.mtlName = "maps/cave/cave.mtl"
+	mi.flipYZ = 1
 	
 	
 	mesh.export(mi)

+ 8 - 4
blenderscripts/mesh.py

@@ -16,6 +16,7 @@ class Initializer:
 		self.blSkeleton = None # Blender Armature
 		self.mtlName = "" # Material name
 		self.saveDir = "" # the name of the saved file
+		self.flipYZ = 0
 	
 
 #=======================================================================================================================
@@ -144,7 +145,7 @@ def updateAnkiVertsWithBoneWeights(mesh, skeleton, ankiVerts):
 #=======================================================================================================================
 # getAnkiMeshScript                                                                                                    =
 #=======================================================================================================================
-def	getAnkiMeshScript(mesh, skeleton, mtlName):
+def	getAnkiMeshScript(mesh, skeleton, mtlName, flipYZ):
 	# check verts number
 	vertsNum = len(mesh.verts)
 	if vertsNum < 3:
@@ -240,7 +241,10 @@ def	getAnkiMeshScript(mesh, skeleton, mtlName):
 	ftxt += str(len(ankiVerts)) + "\n"
 	for i in range(len(ankiVerts)):
 		ankiVert = ankiVerts[i]
-		ftxt += str(ankiVert.x) + " " + str(ankiVert.y) + " " + str(ankiVert.z) + "\n"
+		if flipYZ == 0:
+			ftxt += str(ankiVert.x) + " " + str(ankiVert.y) + " " + str(ankiVert.z) + "\n"
+		else:
+			ftxt += str(ankiVert.x) + " " + str(ankiVert.z) + " " + str(ankiVert.y) + "\n"
 		
 	# write the tris
 	ftxt += str(len(ankiTris)) + "\n"
@@ -290,5 +294,5 @@ def export(meshInit):
 	
 	print("Trying to export mesh \"" + mesh.name + "\"")
 	filename = os.path.abspath(meshInit.saveDir + mesh.name + ".mesh")
-	common.WriteFile(filename, getAnkiMeshScript(mesh, skeleton, meshInit.mtlName))
-	print("Mesh exported!! \"" + filename + "\"")	
+	common.WriteFile(filename, getAnkiMeshScript(mesh, skeleton, meshInit.mtlName, meshInit.flipYZ))
+	print("Mesh exported!! \"" + filename + "\"")	

File diff suppressed because it is too large
+ 431 - 443
build/debug/Makefile


+ 5 - 5
build/download-and-build-externals.sh

@@ -5,26 +5,26 @@ set -x
 cd ../../
 svn checkout http://bullet.googlecode.com/svn/trunk/ bullet
 cd bullet
-cmake -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release
-make
+cmake . -G "Unix Makefiles" -DBUILD_SHARED_LIBS=OFF -DCMAKE_BUILD_TYPE=Release
+nice make -j `cat /proc/cpuinfo | grep processor | wc -l`
 
 cd ..
 hg clone http://hg.libsdl.org/SDL SDL
 cd SDL
 ./autogen.sh
 ./configure
-make
+nice make -j `cat /proc/cpuinfo | grep processor | wc -l`
 
 cd ..
 svn co https://glew.svn.sourceforge.net/svnroot/glew/trunk/glew glew
 cd glew
 make extensions
-make
+nice make -j `cat /proc/cpuinfo | grep processor | wc -l`
 
 cd ..
 hg clone http://hg.libsdl.org/SDL_image SDL_image
 cd SDL_image
 ./autogen.sh
 ./configure
-make
+nice make -j `cat /proc/cpuinfo | grep processor | wc -l`
 

File diff suppressed because it is too large
+ 546 - 595
build/release/Makefile


+ 16 - 8
build/release/gen.cfg.py

@@ -1,12 +1,20 @@
-sourcePaths = [ "../../src/Math/", "../../src/Util/Tokenizer/", "../../src/Misc/", "../../src/", "../../src/Renderer/", "../../src/Scene/", "../../src/Ui/", "../../src/Resources/", "../../src/Util/", "../../src/Scene/Controllers/", "../../src/Physics/", "../../src/Renderer/BufferObjects/", "../../src/Resources/Helpers/" ]
+sourcePaths = ["../../src/Math/", "../../src/Util/Tokenizer/", "../../src/Misc/", "../../src/", "../../src/Renderer/", "../../src/Scene/", "../../src/Ui/", "../../src/Resources/", "../../src/Util/", "../../src/Scene/Controllers/", "../../src/Physics/", "../../src/Renderer/BufferObjects/", "../../src/Resources/Helpers/", "../../src/Resources/Core/"]
 
-includePaths = list(sourcePaths)
-includePaths.extend( [ "../../../bullet_svn/src/", "../../../SDL-hg/include", "../../../glew/include" ] )
+includePaths = []
+includePaths.append("./")
+includePaths.extend(list(sourcePaths))
+includePaths.extend(["../../../bullet/src/", "../../../SDL/include", "../../../glew/include", "../../../SDL_image"])
 
 precompiledHeaders = []
-executableName = "AnKi.bin"
+
+executableName = "anki"
+
 compiler = "g++"
-commonFlags_ = ""
-compilerFlags = "-c -pedantic-errors -pedantic -ansi -Wall -Wextra -W -pipe -s -msse3 -O3 -mtune=core2 -ffast-math -fsingle-precision-constant -DPLATFORM_LINUX -DREVISION=\\\"`svnversion -c ../..`\\\" "
-precompiledHeadersFlags = compilerFlags + " -x "
-linkerFlags = "-rdynamic -L../../../SDL-hg/build/.libs -L../../../glew/lib -L../../../bullet_svn/src/BulletSoftBody -L../../../bullet_svn/src/BulletDynamics -L../../../bullet_svn/src/BulletCollision -L../../../bullet_svn/src/LinearMath -Wl,-Bstatic -lBulletSoftBody -lBulletDynamics -lBulletCollision -lLinearMath -lGLEW -lSDL_image -lGLU -lSDL -Wl,-Bdynamic -lGL -ljpeg -lpng -ltiff"
+
+defines__ = "-DPLATFORM_LINUX -DREVISION=\\\"`svnversion -c ../..`\\\""
+
+precompiledHeadersFlags = defines__ + " -c -pedantic-errors -pedantic -ansi -Wall -Wextra -W -pipe -s -msse3 -O3 -mtune=core2 -ffast-math"
+
+compilerFlags = precompiledHeadersFlags + " -fsingle-precision-constant"
+
+linkerFlags = "-rdynamic -L../../../SDL/build/.libs -L../../../SDL_image/.libs -L../../../glew/lib -L../../../bullet/src/BulletSoftBody -L../../../bullet/src/BulletDynamics -L../../../bullet/src/BulletCollision -L../../../bullet/src/LinearMath -Wl,-Bstatic -lBulletSoftBody -lBulletDynamics -lBulletCollision -lLinearMath -lGLEW -lSDL_image -lGLU -lSDL -lboost_system -lboost_filesystem -Wl,-Bdynamic -lGL -ljpeg -lpng -ltiff"

+ 16 - 7
src/Main.cpp

@@ -35,6 +35,7 @@
 #include "RendererInitializer.h"
 #include "MainRenderer.h"
 #include "DebugDrawer.h"
+#include <boost/lexical_cast.hpp>
 
 App* app = NULL; ///< The only global var. App constructor sets it
 
@@ -99,7 +100,7 @@ void initPhysics()
 		btCollisionShape* colShape = new btBoxShape(btVector3(SCALING*1,SCALING*1,SCALING*1));
 		//btCollisionShape* colShape = new btSphereShape(btScalar(1.));
 
-		/// Create Dynamic Objects
+		// Create Dynamic Objects
 		btTransform startTransform;
 		startTransform.setIdentity();
 
@@ -119,21 +120,21 @@ void initPhysics()
 			{
 				for(int j = 0;j<ARRAY_SIZE_Z;j++)
 				{
-					/*startTransform.setOrigin(SCALING*btVector3(
+					startTransform.setOrigin(SCALING*btVector3(
 										btScalar(2.0*i + start_x),
 										btScalar(20+2.0*k + start_y),
-										btScalar(2.0*j + start_z)));*/
+										btScalar(2.0*j + start_z)));
 
 
 					//using motionstate is recommended, it provides interpolation capabilities, and only synchronizes 'active' objects
-					/*MeshNode* crate = new MeshNode;
+					MeshNode* crate = new MeshNode;
 					crate->init("models/crate0/crate0.mesh");
 					crate->getLocalTransform().setScale(1.11);
 
 					Transform trf(SCALING*Vec3(2.0*i + start_x, 20+2.0*k + start_y, 2.0*j + start_z), Mat3::getIdentity(), 1.0);
-					body = app->getScene()->getPhyWorld()->createNewRigidBody(mass, trf, colShape, crate);*/
+					body = app->getScene()->getPhyWorld()->createNewRigidBody(mass, trf, colShape, crate);
 
-					/*MotionState* myMotionState = new MotionState(startTransform, crate);
+					MotionState* myMotionState = new MotionState(startTransform, crate);
 					btRigidBody::btRigidBodyConstructionInfo rbInfo(mass,myMotionState,colShape,localInertia);
 					//btRigidBody* body = new btRigidBody(rbInfo);
 					body = new btRigidBody(rbInfo);
@@ -144,7 +145,7 @@ void initPhysics()
 
 
 					dynamicsWorld->addRigidBody(body);
-					//body->setGravity(toBt(Vec3(Util::randRange(-1.0, 1.0), Util::randRange(-1.0, 1.0), Util::randRange(-1.0, 1.0))));*/
+					//body->setGravity(toBt(Vec3(Util::randRange(-1.0, 1.0), Util::randRange(-1.0, 1.0), Util::randRange(-1.0, 1.0))));
 					boxes.push_back(body);
 				}
 			}
@@ -263,6 +264,14 @@ void init()
 	imp->meshNodes[0]->meshSkelCtrl->skelNode->skelAnimCtrl->skelAnim.loadRsrc("models/imp/walk.imp.anim");
 	imp->meshNodes[0]->meshSkelCtrl->skelNode->skelAnimCtrl->step = 0.8;
 
+	// cave map
+	for(int i=1; i<21; i++)
+	{
+		MeshNode* node = new MeshNode();
+		node->init(("maps/cave/rock." + lexical_cast<string>(i) + ".mesh").c_str());
+		node->setLocalTransform(Transform(Vec3(0.0, -0.0, 0.0), Mat3::getIdentity(), 0.01));
+	}
+
 	// particle emitter
 	partEmitter = new ParticleEmitter;
 	partEmitter->init(NULL);

+ 1 - 1
src/Misc/collision.cpp

@@ -913,7 +913,7 @@ void bsphere_t::Render()
 
 	glColor4fv(&Vec4(1.0, 1.0, 1.0, 0.2)[0]);
 
-	app->getMainRenderer()->dbg.renderSphere(radius, 24, Vec3(1.0));
+	app->getMainRenderer()->dbg.drawSphere(radius, 24, Vec3(1.0));
 
 	glPopMatrix();*/
 }

+ 8 - 0
src/Physics/DebugDrawer.h

@@ -18,6 +18,8 @@ class DebugDrawer: public btIDebugDraw
 		void drawContactPoint(const btVector3& pointOnB, const btVector3& normalOnB, btScalar distance, int lifeTime,
 		                      const btVector3& color);
 
+		void drawSphere(btScalar radius, const btTransform& transform, const btVector3& color);
+
 		void reportErrorWarning(const char* warningString);
 
 		void draw3dText(const btVector3& location, const char* textString);
@@ -35,6 +37,12 @@ class DebugDrawer: public btIDebugDraw
 // Inlines                                                                                                             =
 //======================================================================================================================
 
+inline void DebugDrawer::drawSphere(btScalar radius, const btTransform& transform, const btVector3& color)
+{
+	Renderer::Dbg::drawSphere(8, radius, toAnki(transform.getOrigin()));
+}
+
+
 inline void DebugDrawer::drawLine(const btVector3& from, const btVector3& to, const btVector3& color)
 {
 	Renderer::Dbg::drawLine(toAnki(from), toAnki(to), Vec4(toAnki(color), 1.0));

+ 2 - 2
src/Physics/MotionState.h

@@ -1,5 +1,5 @@
-#ifndef _MOTIONSTATE_H_
-#define _MOTIONSTATE_H_
+#ifndef MOTIONSTATE_H
+#define MOTIONSTATE_H
 
 #include "Common.h"
 #include "PhyCommon.h"

+ 4 - 4
src/Renderer/Dbg.cpp

@@ -93,9 +93,9 @@ void Renderer::Dbg::renderGrid()
 
 
 //======================================================================================================================
-// renderSphere                                                                                                        =
+// drawSphere                                                                                                        =
 //======================================================================================================================
-void Renderer::Dbg::renderSphere(int complexity, float radius)
+void Renderer::Dbg::drawSphere(int complexity, float radius, const Vec3& pos)
 {
 	const float twopi  = M::PI*2;
 	const float pidiv2 = M::PI/2;
@@ -140,7 +140,7 @@ void Renderer::Dbg::renderSphere(int complexity, float radius)
 			py = radius * ey;
 			pz = radius * ez;
 
-			positions.push_back(Vec3(px, py, pz));
+			positions.push_back(Vec3(px, py, pz) + pos);
 			normals.push_back(Vec3(ex, ey, ez));
 			texCoodrs.push_back(Vec2(-(j/(float)complexity), 2*(i+1)/(float)complexity));
 
@@ -151,7 +151,7 @@ void Renderer::Dbg::renderSphere(int complexity, float radius)
 			py = radius * ey;
 			pz = radius * ez;
 
-			positions.push_back(Vec3(px, py, pz));
+			positions.push_back(Vec3(px, py, pz) + pos);
 			normals.push_back(Vec3(ex, ey, ez));
 			texCoodrs.push_back(Vec2(-(j/(float)complexity), 2*i/(float)complexity));
 		}

+ 1 - 1
src/Renderer/Renderer.h

@@ -373,7 +373,7 @@ class Renderer
 			public:
 				Dbg(Renderer& r_);
 				void renderGrid();
-				static void renderSphere(int complexity, float radius = 1.0);
+				static void drawSphere(int complexity, float radius = 1.0, const Vec3& pos = Vec3(0.0));
 				static void renderCube(float size = 1.0);
 
 				static void setColor(const Vec4& color);

+ 1 - 0
src/Resources/Material.h

@@ -2,6 +2,7 @@
 #define _MATERIAL_H_
 
 #include <boost/ptr_container/ptr_vector.hpp>
+#include <boost/variant.hpp>
 #include "Common.h"
 #include "Math.h"
 #include "Resource.h"

+ 1 - 1
src/Resources/Mesh.cpp

@@ -264,7 +264,7 @@ void Mesh::createVertTangents()
 		float det = (uvedge01.y * uvedge02.x) - (uvedge01.x * uvedge02.y);
 		if(isZero(det))
 		{
-			ERROR("det == " << fixed << det);
+			WARNING(getRsrcName() << ": det == " << fixed << det);
 			det = 0.0001;
 		}
 		else

+ 1 - 1
src/Scene/Light.cpp

@@ -47,6 +47,6 @@ void Light::render()
 {
 	Renderer::Dbg::setColor(Vec4(lightProps->getDiffuseColor(), 1.0));
 	Renderer::Dbg::setModelMat(Mat4(getWorldTransform()));
-	Renderer::Dbg::renderSphere(8, 0.1);
+	Renderer::Dbg::drawSphere(8, 0.1);
 }
 

+ 1 - 1
src/Scene/Scene.cpp

@@ -13,7 +13,7 @@
 //======================================================================================================================
 Scene::Scene()
 {
-	ambientCol = Vec3(0.1, 0.05, 0.05)*1;
+	ambientCol = Vec3(0.1, 0.05, 0.05)*4;
 	sunPos = Vec3(0.0, 1.0, -1.0) * 50.0;
 
 	phyWorld = new PhyWorld;

Some files were not shown because too many files changed in this diff