Merge branch 'master' of github.com:assimp/assimp
commit
45178dc3af
|
@ -958,19 +958,41 @@ void BlenderImporter::ConvertMesh(const Scene& /*in*/, const Object* /*obj*/, co
|
||||||
}
|
}
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
aiCamera* BlenderImporter::ConvertCamera(const Scene& /*in*/, const Object* /*obj*/, const Camera* /*mesh*/, ConversionData& /*conv_data*/)
|
aiCamera* BlenderImporter::ConvertCamera(const Scene& /*in*/, const Object* obj, const Camera* camera, ConversionData& /*conv_data*/)
|
||||||
{
|
{
|
||||||
ScopeGuard<aiCamera> out(new aiCamera());
|
ScopeGuard<aiCamera> out(new aiCamera());
|
||||||
|
out->mName = obj->id.name+2;
|
||||||
return NULL ; //out.dismiss();
|
out->mPosition = aiVector3D(0.f, 0.f, 0.f);
|
||||||
|
out->mUp = aiVector3D(0.f, 1.f, 0.f);
|
||||||
|
out->mLookAt = aiVector3D(0.f, 0.f, -1.f);
|
||||||
|
return out.dismiss();
|
||||||
}
|
}
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
aiLight* BlenderImporter::ConvertLight(const Scene& /*in*/, const Object* /*obj*/, const Lamp* /*mesh*/, ConversionData& /*conv_data*/)
|
aiLight* BlenderImporter::ConvertLight(const Scene& in, const Object* obj, const Lamp* lamp, ConversionData& conv_data)
|
||||||
{
|
{
|
||||||
ScopeGuard<aiLight> out(new aiLight());
|
ScopeGuard<aiLight> out(new aiLight());
|
||||||
|
out->mName = obj->id.name+2;
|
||||||
|
|
||||||
return NULL ; //out.dismiss();
|
switch (lamp->type)
|
||||||
|
{
|
||||||
|
case Lamp::Type_Local:
|
||||||
|
out->mType = aiLightSource_POINT;
|
||||||
|
break;
|
||||||
|
case Lamp::Type_Sun:
|
||||||
|
out->mType = aiLightSource_DIRECTIONAL;
|
||||||
|
|
||||||
|
// blender orients directional lights as facing toward -z
|
||||||
|
out->mDirection = aiVector3D(0.f, 0.f, -1.f);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
out->mColorAmbient = aiColor3D(lamp->r, lamp->g, lamp->b) * lamp->energy;
|
||||||
|
out->mColorSpecular = aiColor3D(lamp->r, lamp->g, lamp->b) * lamp->energy;
|
||||||
|
out->mColorDiffuse = aiColor3D(lamp->r, lamp->g, lamp->b) * lamp->energy;
|
||||||
|
return out.dismiss();
|
||||||
}
|
}
|
||||||
|
|
||||||
// ------------------------------------------------------------------------------------------------
|
// ------------------------------------------------------------------------------------------------
|
||||||
|
|
|
@ -36,9 +36,8 @@
|
||||||
#include "assimp/LogStream.hpp"
|
#include "assimp/LogStream.hpp"
|
||||||
|
|
||||||
|
|
||||||
// currently these are hardcoded
|
// The default hardcoded path. Can be overridden by supplying a path through the commandline.
|
||||||
static const std::string basepath = "../../test/models/OBJ/";
|
static std::string modelpath = "../../test/models/OBJ/spider.obj";
|
||||||
static const std::string modelname = "spider.obj";
|
|
||||||
|
|
||||||
|
|
||||||
HGLRC hRC=NULL; // Permanent Rendering Context
|
HGLRC hRC=NULL; // Permanent Rendering Context
|
||||||
|
@ -165,6 +164,11 @@ void ReSizeGLScene(GLsizei width, GLsizei height) // Resize And Initialize Th
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
std::string getBasePath(const std::string& path)
|
||||||
|
{
|
||||||
|
size_t pos = path.find_last_of("\\/");
|
||||||
|
return (std::string::npos == pos) ? "" : path.substr(0, pos + 1);
|
||||||
|
}
|
||||||
|
|
||||||
int LoadGLTextures(const aiScene* scene)
|
int LoadGLTextures(const aiScene* scene)
|
||||||
{
|
{
|
||||||
|
@ -220,6 +224,7 @@ int LoadGLTextures(const aiScene* scene)
|
||||||
/* get iterator */
|
/* get iterator */
|
||||||
std::map<std::string, GLuint*>::iterator itr = textureIdMap.begin();
|
std::map<std::string, GLuint*>::iterator itr = textureIdMap.begin();
|
||||||
|
|
||||||
|
std::string basepath = getBasePath(modelpath);
|
||||||
for (int i=0; i<numTextures; i++)
|
for (int i=0; i<numTextures; i++)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -799,52 +804,52 @@ LRESULT CALLBACK WndProc(HWND hWnd, // Handles for this Window
|
||||||
return DefWindowProc(hWnd, uMsg, wParam, lParam);
|
return DefWindowProc(hWnd, uMsg, wParam, lParam);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int WINAPI WinMain( HINSTANCE hInstance, // Instance
|
int WINAPI WinMain( HINSTANCE hInstance, // Instance
|
||||||
HINSTANCE hPrevInstance, // Previous Instance
|
HINSTANCE hPrevInstance, // Previous Instance
|
||||||
LPSTR lpCmdLine, // Command Line Parameters
|
LPSTR lpCmdLine, // Command Line Parameters
|
||||||
int nShowCmd ) // Window Show State
|
int nShowCmd ) // Window Show State
|
||||||
{
|
{
|
||||||
MSG msg; // Windows Message Structure
|
MSG msg;
|
||||||
BOOL done=FALSE; // Bool Variable To Exit Loop
|
BOOL done=FALSE;
|
||||||
|
|
||||||
createAILogger();
|
createAILogger();
|
||||||
logInfo("App fired!");
|
logInfo("App fired!");
|
||||||
|
|
||||||
// load scene
|
// Check the command line for an override file path.
|
||||||
|
int argc;
|
||||||
|
LPWSTR* argv = CommandLineToArgvW(GetCommandLineW(), &argc);
|
||||||
|
if (argv != NULL && argc > 1)
|
||||||
|
{
|
||||||
|
std::wstring modelpathW(argv[1]);
|
||||||
|
modelpath = std::string(modelpathW.begin(), modelpathW.end());
|
||||||
|
}
|
||||||
|
|
||||||
if (!Import3DFromFile(basepath+modelname)) return 0;
|
if (!Import3DFromFile(modelpath)) return 0;
|
||||||
|
|
||||||
logInfo("=============== Post Import ====================");
|
logInfo("=============== Post Import ====================");
|
||||||
|
|
||||||
|
|
||||||
// Ask The User Which Screen Mode They Prefer
|
|
||||||
if (MessageBox(NULL, "Would You Like To Run In Fullscreen Mode?", "Start Fullscreen?", MB_YESNO|MB_ICONEXCLAMATION)==IDNO)
|
if (MessageBox(NULL, "Would You Like To Run In Fullscreen Mode?", "Start Fullscreen?", MB_YESNO|MB_ICONEXCLAMATION)==IDNO)
|
||||||
{
|
{
|
||||||
fullscreen=FALSE; // Windowed Mode
|
fullscreen=FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create Our OpenGL Window (also calls GLinit und LoadGLTextures)
|
|
||||||
if (!CreateGLWindow(windowTitle, 640, 480, 16, fullscreen))
|
if (!CreateGLWindow(windowTitle, 640, 480, 16, fullscreen))
|
||||||
{
|
{
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
while(!done) // Game Loop
|
while(!done) // Game Loop
|
||||||
{
|
{
|
||||||
if (PeekMessage(&msg, NULL, 0,0, PM_REMOVE)) // Is There A Message Waiting
|
if (PeekMessage(&msg, NULL, 0,0, PM_REMOVE))
|
||||||
{
|
{
|
||||||
if (msg.message==WM_QUIT) // Have we received A Quit Message?
|
if (msg.message==WM_QUIT)
|
||||||
{
|
{
|
||||||
done=TRUE; // If So done=TRUE
|
done=TRUE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
TranslateMessage(&msg); // Translate The Message
|
TranslateMessage(&msg);
|
||||||
DispatchMessage(&msg); // Dispatch The Message
|
DispatchMessage(&msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -852,26 +857,25 @@ int WINAPI WinMain( HINSTANCE hInstance, // Instance
|
||||||
// Draw The Scene. Watch For ESC Key And Quit Messaged From DrawGLScene()
|
// Draw The Scene. Watch For ESC Key And Quit Messaged From DrawGLScene()
|
||||||
if (active)
|
if (active)
|
||||||
{
|
{
|
||||||
if (keys[VK_ESCAPE]) // Was ESC pressed?
|
if (keys[VK_ESCAPE])
|
||||||
{
|
{
|
||||||
done=TRUE; // ESC signalled A quit
|
done=TRUE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
DrawGLScene(); // Draw The Scene
|
DrawGLScene();
|
||||||
SwapBuffers(hDC); // Swap Buffers (Double Buffering)
|
SwapBuffers(hDC);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (keys[VK_F1]) // Is F1 Being Pressed?
|
if (keys[VK_F1])
|
||||||
{
|
{
|
||||||
keys[VK_F1]=FALSE; // If so make Key FALSE
|
keys[VK_F1]=FALSE;
|
||||||
KillGLWindow(); // Kill Our Current Window
|
KillGLWindow();
|
||||||
fullscreen=!fullscreen; // Toggle Fullscreen
|
fullscreen=!fullscreen;
|
||||||
//recreate Our OpenGL Window
|
|
||||||
if (!CreateGLWindow(windowTitle, 640, 480, 16, fullscreen))
|
if (!CreateGLWindow(windowTitle, 640, 480, 16, fullscreen))
|
||||||
{
|
{
|
||||||
return 0; // Quit if Window Was Not Created
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -879,10 +883,8 @@ int WINAPI WinMain( HINSTANCE hInstance, // Instance
|
||||||
|
|
||||||
// *** cleanup ***
|
// *** cleanup ***
|
||||||
|
|
||||||
// clear map
|
|
||||||
textureIdMap.clear(); //no need to delete pointers in it manually here. (Pointers point to textureIds deleted in next step)
|
textureIdMap.clear(); //no need to delete pointers in it manually here. (Pointers point to textureIds deleted in next step)
|
||||||
|
|
||||||
// clear texture ids
|
|
||||||
if (textureIds)
|
if (textureIds)
|
||||||
{
|
{
|
||||||
delete[] textureIds;
|
delete[] textureIds;
|
||||||
|
@ -891,8 +893,7 @@ int WINAPI WinMain( HINSTANCE hInstance, // Instance
|
||||||
|
|
||||||
// *** cleanup end ***
|
// *** cleanup end ***
|
||||||
|
|
||||||
// Shutdown
|
|
||||||
destroyAILogger();
|
destroyAILogger();
|
||||||
KillGLWindow();
|
KillGLWindow();
|
||||||
return (msg.wParam); // Exit The Program
|
return (msg.wParam);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue