AssimpView:

- postprocessing configuration is no (partially) configurable.
 - adding linsk to Assimp homepage/bugtracker/forums.
 - updating about dialog.  
 - fixing colors of texture view (tiny array overrun ...).
 - minor UI theme adjustments.
 - 'setup file extensions' works again.
 - normal smooth limit is now used for primary import, too.
 - minor spelling fixes in the UI.

git-svn-id: https://assimp.svn.sourceforge.net/svnroot/assimp/trunk@417 67173fc5-114c-0410-ac8e-9d2fd5bffc1f
pull/1/head
aramis_acg 2009-05-09 23:27:48 +00:00
parent b7ecf79a03
commit 84c6b4fde6
12 changed files with 315 additions and 107 deletions

View File

@ -61,3 +61,6 @@ Contributed fixes for the documentation and the doxygen markup
- Zhao Lei - Zhao Lei
Contributed several bugfixes fixing memory leaks and improving float parsing Contributed several bugfixes fixing memory leaks and improving float parsing
- sueastside
Updated PyAssimp to the latest Assimp data structures and provided a script to keep the Python binding up-to-date.

View File

@ -15,14 +15,13 @@ set /p addtext= < tmpfile.txt
del /q tmpfile.txt del /q tmpfile.txt
cd ..\mkutil cd ..\mkutil
echo #define SVNRevision > revision.h echo #define SVNRevision > tmpfile.txt
if exist tmpfile.txt del /q tmpfile.txt if exist revision.h del /q revision.h
for /f "delims=" %%l in (revision.h) Do ( for /f "delims=" %%l in (tmpfile.txt) Do (
echo %%l %addtext% >> tmpfile.txt echo %%l %addtext% >> revision.h
) )
del /q revision.h del /q tmpfile.txt
ren tmpfile.txt revision.h

View File

@ -87,7 +87,7 @@ private:
this->m_aiImageList[4] = 4; this->m_aiImageList[4] = 4;
this->m_avCheckerColors[0].x = this->m_avCheckerColors[0].y = this->m_avCheckerColors[0].z = 0.4f; this->m_avCheckerColors[0].x = this->m_avCheckerColors[0].y = this->m_avCheckerColors[0].z = 0.4f;
this->m_avCheckerColors[0].x = this->m_avCheckerColors[1].y = this->m_avCheckerColors[2].z = 0.6f; this->m_avCheckerColors[1].x = this->m_avCheckerColors[1].y = this->m_avCheckerColors[1].z = 0.6f;
} }
public: public:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 42 KiB

View File

@ -122,7 +122,7 @@ void CLogDisplay::OnRender()
// if no asset is loaded draw a "no asset loaded" text in the center // if no asset is loaded draw a "no asset loaded" text in the center
if (!g_pcAsset) if (!g_pcAsset)
{ {
const char* szText = "No asset loaded\r\nUse [Viewer | Open asset] to load one"; const char* szText = "Nothing to display ... \r\nTry [Viewer | Open asset] to load an asset";
// shadow // shadow
RECT sCopy; RECT sCopy;

View File

@ -80,15 +80,22 @@ void MakeFileAssociations()
HKEY g_hRegistry; HKEY g_hRegistry;
aiString list; aiString list, tmp;
aiGetExtensionList(&list); aiGetExtensionList(&list);
tmp = list;
while (1) const char* sz = strtok(list.data,";");
do
{ {
RegCreateKeyEx(HKEY_CURRENT_USER,"Software\\Classes\\.3ds",NULL,NULL,0,KEY_ALL_ACCESS, NULL, &g_hRegistry,NULL); char buf[256];
assert(sz[0] == '*');
sprintf(buf,"Software\\Classes\\%s",sz+1);
RegCreateKeyEx(HKEY_CURRENT_USER,buf,NULL,NULL,0,KEY_ALL_ACCESS, NULL, &g_hRegistry,NULL);
RegSetValueEx(g_hRegistry,"",0,REG_SZ,(const BYTE*)"ASSIMPVIEW_CLASS",(DWORD)strlen("ASSIMPVIEW_CLASS")+1); RegSetValueEx(g_hRegistry,"",0,REG_SZ,(const BYTE*)"ASSIMPVIEW_CLASS",(DWORD)strlen("ASSIMPVIEW_CLASS")+1);
RegCloseKey(g_hRegistry); RegCloseKey(g_hRegistry);
} }
while (sz = strtok(NULL,";"));
RegCreateKeyEx(HKEY_CURRENT_USER,"Software\\Classes\\ASSIMPVIEW_CLASS",NULL,NULL,0,KEY_ALL_ACCESS, NULL, &g_hRegistry,NULL); RegCreateKeyEx(HKEY_CURRENT_USER,"Software\\Classes\\ASSIMPVIEW_CLASS",NULL,NULL,0,KEY_ALL_ACCESS, NULL, &g_hRegistry,NULL);
RegCloseKey(g_hRegistry); RegCloseKey(g_hRegistry);
@ -100,11 +107,7 @@ void MakeFileAssociations()
CLogDisplay::Instance().AddEntry("[OK] File assocations have been registered", CLogDisplay::Instance().AddEntry("[OK] File assocations have been registered",
D3DCOLOR_ARGB(0xFF,0,0xFF,0)); D3DCOLOR_ARGB(0xFF,0,0xFF,0));
aiString sz; CLogDisplay::Instance().AddEntry(tmp.data,D3DCOLOR_ARGB(0xFF,0,0xFF,0));
aiGetExtensionList(&sz);
CLogDisplay::Instance().AddEntry(sz.data,
D3DCOLOR_ARGB(0xFF,0,0xFF,0));
return;
} }
@ -192,6 +195,16 @@ void LoadCheckerPatternColors()
(BYTE*) /* jep, this is evil */ CDisplay::Instance().GetSecondCheckerColor(),&dwTemp); (BYTE*) /* jep, this is evil */ CDisplay::Instance().GetSecondCheckerColor(),&dwTemp);
} }
//-------------------------------------------------------------------------------
// Changed pp setup
//-------------------------------------------------------------------------------
void UpdatePPSettings()
{
DWORD dwValue = ppsteps;
RegSetValueExA(g_hRegistry,"PostProcessing",0,REG_DWORD,(const BYTE*)&dwValue,4);
UpdateWindow(g_hDlg);
}
//------------------------------------------------------------------------------- //-------------------------------------------------------------------------------
// Toggle the "Display Normals" state // Toggle the "Display Normals" state
//------------------------------------------------------------------------------- //-------------------------------------------------------------------------------
@ -203,7 +216,6 @@ void ToggleNormals()
DWORD dwValue = 0; DWORD dwValue = 0;
if (g_sOptions.bRenderNormals)dwValue = 1; if (g_sOptions.bRenderNormals)dwValue = 1;
RegSetValueExA(g_hRegistry,"RenderNormals",0,REG_DWORD,(const BYTE*)&dwValue,4); RegSetValueExA(g_hRegistry,"RenderNormals",0,REG_DWORD,(const BYTE*)&dwValue,4);
UpdateWindow(g_hDlg);
} }
//------------------------------------------------------------------------------- //-------------------------------------------------------------------------------
@ -232,7 +244,6 @@ void ToggleFPSView()
DWORD dwValue = 0; DWORD dwValue = 0;
if (g_bFPSView)dwValue = 1; if (g_bFPSView)dwValue = 1;
RegSetValueExA(g_hRegistry,"FPSView",0,REG_DWORD,(const BYTE*)&dwValue,4); RegSetValueExA(g_hRegistry,"FPSView",0,REG_DWORD,(const BYTE*)&dwValue,4);
UpdateWindow(g_hDlg);
} }
//------------------------------------------------------------------------------- //-------------------------------------------------------------------------------
@ -246,7 +257,6 @@ void ToggleMultipleLights()
DWORD dwValue = 0; DWORD dwValue = 0;
if (g_sOptions.b3Lights)dwValue = 1; if (g_sOptions.b3Lights)dwValue = 1;
RegSetValueExA(g_hRegistry,"MultipleLights",0,REG_DWORD,(const BYTE*)&dwValue,4); RegSetValueExA(g_hRegistry,"MultipleLights",0,REG_DWORD,(const BYTE*)&dwValue,4);
UpdateWindow(g_hDlg);
} }
//------------------------------------------------------------------------------- //-------------------------------------------------------------------------------
@ -260,7 +270,6 @@ void ToggleLightRotate()
DWORD dwValue = 0; DWORD dwValue = 0;
if (g_sOptions.bLightRotate)dwValue = 1; if (g_sOptions.bLightRotate)dwValue = 1;
RegSetValueExA(g_hRegistry,"LightRotate",0,REG_DWORD,(const BYTE*)&dwValue,4); RegSetValueExA(g_hRegistry,"LightRotate",0,REG_DWORD,(const BYTE*)&dwValue,4);
UpdateWindow(g_hDlg);
} }
//------------------------------------------------------------------------------- //-------------------------------------------------------------------------------
@ -274,7 +283,6 @@ void ToggleLowQuality()
DWORD dwValue = 0; DWORD dwValue = 0;
if (g_sOptions.bLowQuality)dwValue = 1; if (g_sOptions.bLowQuality)dwValue = 1;
RegSetValueExA(g_hRegistry,"LowQuality",0,REG_DWORD,(const BYTE*)&dwValue,4); RegSetValueExA(g_hRegistry,"LowQuality",0,REG_DWORD,(const BYTE*)&dwValue,4);
UpdateWindow(g_hDlg);
} }
//------------------------------------------------------------------------------- //-------------------------------------------------------------------------------
@ -291,7 +299,6 @@ void ToggleSpecular()
// update all specular materials // update all specular materials
CMaterialManager::Instance().UpdateSpecularMaterials(); CMaterialManager::Instance().UpdateSpecularMaterials();
UpdateWindow(g_hDlg);
} }
//------------------------------------------------------------------------------- //-------------------------------------------------------------------------------
@ -308,7 +315,6 @@ void ToggleMats()
// update all specular materials // update all specular materials
CMaterialManager::Instance().UpdateSpecularMaterials(); CMaterialManager::Instance().UpdateSpecularMaterials();
UpdateWindow(g_hDlg);
} }
//------------------------------------------------------------------------------- //-------------------------------------------------------------------------------
@ -350,7 +356,6 @@ void ToggleWireFrame()
DWORD dwValue = 0; DWORD dwValue = 0;
if (RenderOptions::WIREFRAME == g_sOptions.eDrawMode)dwValue = 1; if (RenderOptions::WIREFRAME == g_sOptions.eDrawMode)dwValue = 1;
RegSetValueExA(g_hRegistry,"Wireframe",0,REG_DWORD,(const BYTE*)&dwValue,4); RegSetValueExA(g_hRegistry,"Wireframe",0,REG_DWORD,(const BYTE*)&dwValue,4);
UpdateWindow(g_hDlg);
} }
@ -386,7 +391,6 @@ void ToggleMS()
DWORD dwValue = 0; DWORD dwValue = 0;
if (g_sOptions.bMultiSample)dwValue = 1; if (g_sOptions.bMultiSample)dwValue = 1;
RegSetValueExA(g_hRegistry,"MultiSampling",0,REG_DWORD,(const BYTE*)&dwValue,4); RegSetValueExA(g_hRegistry,"MultiSampling",0,REG_DWORD,(const BYTE*)&dwValue,4);
UpdateWindow(g_hDlg);
} }
//------------------------------------------------------------------------------- //-------------------------------------------------------------------------------
@ -958,6 +962,28 @@ void OpenAsset()
return; return;
} }
//-------------------------------------------------------------------------------
void SetupPPUIState()
{
// fucking hell, that's ugly. anyone willing to rewrite me from scratch?
HMENU hMenu = GetMenu(g_hDlg);
CheckMenuItem(hMenu,ID_VIEWER_PP_JIV,ppsteps & aiProcess_JoinIdenticalVertices ? MF_CHECKED : MF_UNCHECKED);
CheckMenuItem(hMenu,ID_VIEWER_PP_CTS,ppsteps & aiProcess_CalcTangentSpace ? MF_CHECKED : MF_UNCHECKED);
CheckMenuItem(hMenu,ID_VIEWER_PP_FD,ppsteps & aiProcess_FindDegenerates ? MF_CHECKED : MF_UNCHECKED);
CheckMenuItem(hMenu,ID_VIEWER_PP_FID,ppsteps & aiProcess_FindInvalidData ? MF_CHECKED : MF_UNCHECKED);
CheckMenuItem(hMenu,ID_VIEWER_PP_FIM,ppsteps & aiProcess_FindInstances ? MF_CHECKED : MF_UNCHECKED);
CheckMenuItem(hMenu,ID_VIEWER_PP_FIN,ppsteps & aiProcess_FixInfacingNormals ? MF_CHECKED : MF_UNCHECKED);
CheckMenuItem(hMenu,ID_VIEWER_PP_GUV,ppsteps & aiProcess_GenUVCoords ? MF_CHECKED : MF_UNCHECKED);
CheckMenuItem(hMenu,ID_VIEWER_PP_ICL,ppsteps & aiProcess_ImproveCacheLocality ? MF_CHECKED : MF_UNCHECKED);
CheckMenuItem(hMenu,ID_VIEWER_PP_OG,ppsteps & aiProcess_OptimizeGraph ? MF_CHECKED : MF_UNCHECKED);
CheckMenuItem(hMenu,ID_VIEWER_PP_OM,ppsteps & aiProcess_OptimizeMeshes ? MF_CHECKED : MF_UNCHECKED);
CheckMenuItem(hMenu,ID_VIEWER_PP_PTV,ppsteps & aiProcess_PreTransformVertices ? MF_CHECKED : MF_UNCHECKED);
CheckMenuItem(hMenu,ID_VIEWER_PP_RRM2,ppsteps & aiProcess_RemoveRedundantMaterials ? MF_CHECKED : MF_UNCHECKED);
CheckMenuItem(hMenu,ID_VIEWER_PP_TUV,ppsteps & aiProcess_TransformUVCoords ? MF_CHECKED : MF_UNCHECKED);
CheckMenuItem(hMenu,ID_VIEWER_PP_VDS,ppsteps & aiProcess_ValidateDataStructure ? MF_CHECKED : MF_UNCHECKED);
}
//------------------------------------------------------------------------------- //-------------------------------------------------------------------------------
// Initialize the user interface // Initialize the user interface
//------------------------------------------------------------------------------- //-------------------------------------------------------------------------------
@ -1149,6 +1175,12 @@ void InitUI()
g_sOptions.eDrawMode = RenderOptions::WIREFRAME; g_sOptions.eDrawMode = RenderOptions::WIREFRAME;
CheckDlgButton(g_hDlg,IDC_TOGGLEWIRE,BST_CHECKED); CheckDlgButton(g_hDlg,IDC_TOGGLEWIRE,BST_CHECKED);
} }
if(ERROR_SUCCESS != RegQueryValueEx(g_hRegistry,"PostProcessing",NULL,NULL,(BYTE*)&dwValue,&dwTemp))
ppsteps = ppstepsdefault;
else ppsteps = dwValue;
SetupPPUIState();
LoadCheckerPatternColors(); LoadCheckerPatternColors();
SendDlgItemMessage(g_hDlg,IDC_SLIDERANIM,TBM_SETRANGEMIN,TRUE,0); SendDlgItemMessage(g_hDlg,IDC_SLIDERANIM,TBM_SETRANGEMIN,TRUE,0);
@ -1649,6 +1681,7 @@ INT_PTR CALLBACK MessageProc(HWND hwndDlg,UINT uMsg,
case WM_COMMAND: case WM_COMMAND:
HMENU hMenu = GetMenu(g_hDlg);
if (ID_VIEWER_QUIT == LOWORD(wParam)) if (ID_VIEWER_QUIT == LOWORD(wParam))
{ {
PostQuitMessage(0); PostQuitMessage(0);
@ -1680,6 +1713,22 @@ INT_PTR CALLBACK MessageProc(HWND hwndDlg,UINT uMsg,
{ {
CLogWindow::Instance().Show(); CLogWindow::Instance().Show();
} }
else if (ID__WEBSITE == LOWORD(wParam))
{
ShellExecute(NULL,"open","http://assimp.sourceforge.net","","",SW_SHOW);
}
else if (ID__WEBSITESF == LOWORD(wParam))
{
ShellExecute(NULL,"open","https://sourceforge.net/projects/assimp","","",SW_SHOW);
}
else if (ID_REPORTBUG == LOWORD(wParam))
{
ShellExecute(NULL,"open","https://sourceforge.net/tracker/?func=add&group_id=226462&atid=1067632","","",SW_SHOW);
}
else if (ID_FR == LOWORD(wParam))
{
ShellExecute(NULL,"open","https://sourceforge.net/forum/forum.php?forum_id=817653","","",SW_SHOW);
}
else if (ID_TOOLS_CLEARLOG == LOWORD(wParam)) else if (ID_TOOLS_CLEARLOG == LOWORD(wParam))
{ {
CLogWindow::Instance().Clear(); CLogWindow::Instance().Clear();
@ -1727,34 +1776,122 @@ INT_PTR CALLBACK MessageProc(HWND hwndDlg,UINT uMsg,
g_pcAsset->FlipNormals(); g_pcAsset->FlipNormals();
} }
} }
// fucking hell, this is ugly. anyone willing to rewrite it from scratch using wxwidgets or similar?
else if (ID_VIEWER_PP_JIV == LOWORD(wParam)) {
ppsteps ^= aiProcess_JoinIdenticalVertices;
CheckMenuItem(hMenu,ID_VIEWER_PP_JIV,ppsteps & aiProcess_JoinIdenticalVertices ? MF_CHECKED : MF_UNCHECKED);
UpdatePPSettings();
}
else if (ID_VIEWER_PP_CTS == LOWORD(wParam)) {
ppsteps ^= aiProcess_CalcTangentSpace;
CheckMenuItem(hMenu,ID_VIEWER_PP_CTS,ppsteps & aiProcess_CalcTangentSpace ? MF_CHECKED : MF_UNCHECKED);
UpdatePPSettings();
}
else if (ID_VIEWER_PP_FD == LOWORD(wParam)) {
ppsteps ^= aiProcess_FindDegenerates;
CheckMenuItem(hMenu,ID_VIEWER_PP_FD,ppsteps & aiProcess_FindDegenerates ? MF_CHECKED : MF_UNCHECKED);
UpdatePPSettings();
}
else if (ID_VIEWER_PP_FID == LOWORD(wParam)) {
ppsteps ^= aiProcess_FindInvalidData;
CheckMenuItem(hMenu,ID_VIEWER_PP_FID,ppsteps & aiProcess_FindInvalidData ? MF_CHECKED : MF_UNCHECKED);
UpdatePPSettings();
}
else if (ID_VIEWER_PP_FIM == LOWORD(wParam)) {
ppsteps ^= aiProcess_FindInstances;
CheckMenuItem(hMenu,ID_VIEWER_PP_FIM,ppsteps & aiProcess_FindInstances ? MF_CHECKED : MF_UNCHECKED);
UpdatePPSettings();
}
else if (ID_VIEWER_PP_FIN == LOWORD(wParam)) {
ppsteps ^= aiProcess_FixInfacingNormals;
CheckMenuItem(hMenu,ID_VIEWER_PP_FIN,ppsteps & aiProcess_FixInfacingNormals ? MF_CHECKED : MF_UNCHECKED);
UpdatePPSettings();
}
else if (ID_VIEWER_PP_GUV == LOWORD(wParam)) {
ppsteps ^= aiProcess_GenUVCoords;
CheckMenuItem(hMenu,ID_VIEWER_PP_GUV,ppsteps & aiProcess_GenUVCoords ? MF_CHECKED : MF_UNCHECKED);
UpdatePPSettings();
}
else if (ID_VIEWER_PP_ICL == LOWORD(wParam)) {
ppsteps ^= aiProcess_ImproveCacheLocality;
CheckMenuItem(hMenu,ID_VIEWER_PP_ICL,ppsteps & aiProcess_ImproveCacheLocality ? MF_CHECKED : MF_UNCHECKED);
UpdatePPSettings();
}
else if (ID_VIEWER_PP_OG == LOWORD(wParam)) {
if (ppsteps & aiProcess_PreTransformVertices) {
CLogDisplay::Instance().AddEntry("[ERROR] This setting is incompatible with \'Pretransform Vertices\'");
}
else {
ppsteps ^= aiProcess_OptimizeGraph;
CheckMenuItem(hMenu,ID_VIEWER_PP_OG,ppsteps & aiProcess_OptimizeGraph ? MF_CHECKED : MF_UNCHECKED);
UpdatePPSettings();
}
}
else if (ID_VIEWER_PP_OM == LOWORD(wParam)) {
ppsteps ^= aiProcess_OptimizeMeshes;
CheckMenuItem(hMenu,ID_VIEWER_PP_OM,ppsteps & aiProcess_OptimizeMeshes ? MF_CHECKED : MF_UNCHECKED);
UpdatePPSettings();
}
else if (ID_VIEWER_PP_PTV == LOWORD(wParam)) {
if (ppsteps & aiProcess_OptimizeGraph) {
CLogDisplay::Instance().AddEntry("[ERROR] This setting is incompatible with \'Optimize Scenegraph\'");
}
else {
ppsteps ^= aiProcess_PreTransformVertices;
CheckMenuItem(hMenu,ID_VIEWER_PP_PTV,ppsteps & aiProcess_PreTransformVertices ? MF_CHECKED : MF_UNCHECKED);
UpdatePPSettings();
}
}
else if (ID_VIEWER_PP_RRM2 == LOWORD(wParam)) {
ppsteps ^= aiProcess_RemoveRedundantMaterials;
CheckMenuItem(hMenu,ID_VIEWER_PP_RRM2,ppsteps & aiProcess_RemoveRedundantMaterials ? MF_CHECKED : MF_UNCHECKED);
UpdatePPSettings();
}
else if (ID_VIEWER_PP_TUV == LOWORD(wParam)) {
ppsteps ^= aiProcess_TransformUVCoords;
CheckMenuItem(hMenu,ID_VIEWER_PP_TUV,ppsteps & aiProcess_TransformUVCoords ? MF_CHECKED : MF_UNCHECKED);
UpdatePPSettings();
}
else if (ID_VIEWER_PP_VDS == LOWORD(wParam)) {
ppsteps ^= aiProcess_ValidateDataStructure;
CheckMenuItem(hMenu,ID_VIEWER_PP_VDS,ppsteps & aiProcess_ValidateDataStructure ? MF_CHECKED : MF_UNCHECKED);
UpdatePPSettings();
}
else if (ID_VIEWER_RELOAD == LOWORD(wParam))
{
DeleteAsset();
LoadAsset();
}
else if (ID_IMPORTSETTINGS_RESETTODEFAULT == LOWORD(wParam))
{
ppsteps = ppstepsdefault;
UpdatePPSettings();
SetupPPUIState();
}
else if (ID_IMPORTSETTINGS_OPENPOST == LOWORD(wParam))
{
ShellExecute(NULL,"open","http://assimp.sourceforge.net/lib_html/ai_post_process_8h.html","","",SW_SHOW);
}
else if (ID_TOOLS_ORIGINALNORMALS == LOWORD(wParam)) else if (ID_TOOLS_ORIGINALNORMALS == LOWORD(wParam))
{ {
if (g_pcAsset && g_pcAsset->pcScene) if (g_pcAsset && g_pcAsset->pcScene)
{ {
g_pcAsset->SetNormalSet(AssimpView::AssetHelper::ORIGINAL); g_pcAsset->SetNormalSet(AssimpView::AssetHelper::ORIGINAL);
CheckMenuItem(hMenu,ID_TOOLS_ORIGINALNORMALS,MF_BYCOMMAND | MF_CHECKED);
HMENU hMenu = GetMenu(g_hDlg); CheckMenuItem(hMenu,ID_TOOLS_HARDNORMALS,MF_BYCOMMAND | MF_UNCHECKED);
ModifyMenu(hMenu,ID_TOOLS_ORIGINALNORMALS, CheckMenuItem(hMenu,ID_TOOLS_SMOOTHNORMALS,MF_BYCOMMAND | MF_UNCHECKED);
MF_BYCOMMAND | MF_CHECKED | MF_STRING,ID_TOOLS_ORIGINALNORMALS,"Original normals");
ModifyMenu(hMenu,ID_TOOLS_HARDNORMALS,
MF_BYCOMMAND | MF_UNCHECKED | MF_STRING,ID_TOOLS_HARDNORMALS,"Hard normals");
ModifyMenu(hMenu,ID_TOOLS_SMOOTHNORMALS,
MF_BYCOMMAND | MF_UNCHECKED | MF_STRING,ID_TOOLS_SMOOTHNORMALS,"Smooth normals");
} }
} }
else if (ID_TOOLS_SMOOTHNORMALS == LOWORD(wParam)) else if (ID_TOOLS_SMOOTHNORMALS == LOWORD(wParam))
{ {
if (g_pcAsset && g_pcAsset->pcScene) if (g_pcAsset && g_pcAsset->pcScene)
{ {
g_pcAsset->SetNormalSet(AssimpView::AssetHelper::SMOOTH); g_pcAsset->SetNormalSet(AssimpView::AssetHelper::SMOOTH);
CheckMenuItem(hMenu,ID_TOOLS_ORIGINALNORMALS,MF_BYCOMMAND | MF_UNCHECKED);
HMENU hMenu = GetMenu(g_hDlg); CheckMenuItem(hMenu,ID_TOOLS_HARDNORMALS,MF_BYCOMMAND | MF_UNCHECKED);
ModifyMenu(hMenu,ID_TOOLS_SMOOTHNORMALS, CheckMenuItem(hMenu,ID_TOOLS_SMOOTHNORMALS,MF_BYCOMMAND | MF_CHECKED);
MF_BYCOMMAND | MF_CHECKED | MF_STRING,ID_TOOLS_SMOOTHNORMALS,"Smooth normals");
ModifyMenu(hMenu,ID_TOOLS_HARDNORMALS,
MF_BYCOMMAND | MF_UNCHECKED | MF_STRING,ID_TOOLS_HARDNORMALS,"Hard normals");
ModifyMenu(hMenu,ID_TOOLS_ORIGINALNORMALS,
MF_BYCOMMAND | MF_UNCHECKED | MF_STRING,ID_TOOLS_ORIGINALNORMALS,"Original normals");
} }
} }
else if (ID_TOOLS_HARDNORMALS == LOWORD(wParam)) else if (ID_TOOLS_HARDNORMALS == LOWORD(wParam))
@ -1762,14 +1899,9 @@ INT_PTR CALLBACK MessageProc(HWND hwndDlg,UINT uMsg,
if (g_pcAsset && g_pcAsset->pcScene) if (g_pcAsset && g_pcAsset->pcScene)
{ {
g_pcAsset->SetNormalSet(AssimpView::AssetHelper::HARD); g_pcAsset->SetNormalSet(AssimpView::AssetHelper::HARD);
CheckMenuItem(hMenu,ID_TOOLS_ORIGINALNORMALS,MF_BYCOMMAND | MF_UNCHECKED);
HMENU hMenu = GetMenu(g_hDlg); CheckMenuItem(hMenu,ID_TOOLS_HARDNORMALS,MF_BYCOMMAND | MF_CHECKED);
ModifyMenu(hMenu,ID_TOOLS_HARDNORMALS, CheckMenuItem(hMenu,ID_TOOLS_SMOOTHNORMALS,MF_BYCOMMAND | MF_UNCHECKED);
MF_BYCOMMAND | MF_CHECKED | MF_STRING,ID_TOOLS_HARDNORMALS,"Hard normals");
ModifyMenu(hMenu,ID_TOOLS_ORIGINALNORMALS,
MF_BYCOMMAND | MF_UNCHECKED | MF_STRING,ID_TOOLS_ORIGINALNORMALS,"Original normals");
ModifyMenu(hMenu,ID_TOOLS_SMOOTHNORMALS,
MF_BYCOMMAND | MF_UNCHECKED | MF_STRING,ID_TOOLS_SMOOTHNORMALS,"Smooth normals");
} }
} }
else if (ID_TOOLS_STEREOVIEW == LOWORD(wParam)) else if (ID_TOOLS_STEREOVIEW == LOWORD(wParam))
@ -2107,7 +2239,7 @@ int APIENTRY _tWinMain(HINSTANCE hInstance,
"ASSIMP ModelViewer",MB_OK); "ASSIMP ModelViewer",MB_OK);
return -4; return -4;
} }
CLogDisplay::Instance().AddEntry("[OK] assimp_view has been initialized successfully"); CLogDisplay::Instance().AddEntry("[OK] Here we go!");
// create the log window // create the log window
CLogWindow::Instance().Init(); CLogWindow::Instance().Init();

Binary file not shown.

View File

@ -76,6 +76,25 @@ IDirect3DTexture9* g_pcTexture = NULL;
bool g_bPlay = false; bool g_bPlay = false;
double g_dCurrent = 0.; double g_dCurrent = 0.;
// default pp steps
unsigned int ppsteps = aiProcess_CalcTangentSpace | // calculate tangents and bitangents if possible
aiProcess_JoinIdenticalVertices | // join identical vertices/ optimize indexing
aiProcess_ValidateDataStructure | // perform a full validation of the loader's output
aiProcess_ImproveCacheLocality | // improve the cache locality of the output vertices
aiProcess_RemoveRedundantMaterials | // remove redundant materials
aiProcess_FindDegenerates | // remove degenerated polygons from the import
aiProcess_FindInvalidData | // detect invalid model data, such as invalid normal vectors
aiProcess_GenUVCoords | // convert spherical, cylindrical, box and planar mapping to proper UVs
aiProcess_TransformUVCoords | // preprocess UV transformations (scaling, translation ...)
aiProcess_FindInstances | // search for instanced meshes and remove them by references to one master
aiProcess_LimitBoneWeights | // limit bone weights to 4 per vertex
aiProcess_OptimizeMeshes | // join small meshes, if possible;
0;
unsigned int ppstepsdefault = ppsteps;
bool nopointslines = false;
extern bool g_bWasFlipped /*= false*/; extern bool g_bWasFlipped /*= false*/;
aiMatrix4x4 g_mWorld; aiMatrix4x4 g_mWorld;
@ -129,31 +148,21 @@ DWORD WINAPI LoadThreadProc(LPVOID lpParameter)
double fCur = (double)timeGetTime(); double fCur = (double)timeGetTime();
aiSetImportPropertyInteger(AI_CONFIG_IMPORT_TER_MAKE_UVS,1); aiSetImportPropertyInteger(AI_CONFIG_IMPORT_TER_MAKE_UVS,1);
aiSetImportPropertyFloat(AI_CONFIG_PP_GSN_MAX_SMOOTHING_ANGLE,80.f); aiSetImportPropertyFloat(AI_CONFIG_PP_GSN_MAX_SMOOTHING_ANGLE,g_smoothAngle);
aiSetImportPropertyInteger(AI_CONFIG_PP_SBP_REMOVE,nopointslines ? aiPrimitiveType_LINE | aiPrimitiveType_POINT : 0 );
//aiSetImportPropertyInteger(AI_CONFIG_PP_FD_REMOVE,1); //aiSetImportPropertyInteger(AI_CONFIG_PP_FD_REMOVE,1);
//aiSetImportPropertyInteger(AI_CONFIG_PP_PTV_KEEP_HIERARCHY,1); //aiSetImportPropertyInteger(AI_CONFIG_PP_PTV_KEEP_HIERARCHY,1);
// Call ASSIMPs C-API to load the file // Call ASSIMPs C-API to load the file
g_pcAsset->pcScene = (aiScene*)aiImportFile(g_szFileName, g_pcAsset->pcScene = (aiScene*)aiImportFile(g_szFileName,
aiProcess_CalcTangentSpace | // calculate tangents and bitangents if possible
aiProcess_JoinIdenticalVertices | // join identical vertices/ optimize indexing ppsteps | /* configurable pp steps */
aiProcess_Triangulate | // triangulate polygons with more than 3 edges
aiProcess_GenSmoothNormals | // generate smooth normal vectors if not existing aiProcess_GenSmoothNormals | // generate smooth normal vectors if not existing
aiProcess_ConvertToLeftHanded | // convert everything to D3D left handed space
aiProcess_SplitLargeMeshes | // split large, unrenderable meshes into submeshes aiProcess_SplitLargeMeshes | // split large, unrenderable meshes into submeshes
aiProcess_ValidateDataStructure | // perform a full validation of the loader's output aiProcess_Triangulate | // triangulate polygons with more than 3 edges
aiProcess_ImproveCacheLocality | // improve the cache locality of the output vertices aiProcess_ConvertToLeftHanded | // convert everything to D3D left handed space
aiProcess_RemoveRedundantMaterials | // remove redundant materials
aiProcess_SortByPType | // make 'clean' meshes which consist of a single typ of primitives aiProcess_SortByPType | // make 'clean' meshes which consist of a single typ of primitives
aiProcess_FindDegenerates | // remove degenerated polygons from the import
aiProcess_FindInvalidData | // detect invalid model data, such as invalid normal vectors
aiProcess_GenUVCoords | // convert spherical, cylindrical, box and planar mapping to proper UVs
aiProcess_TransformUVCoords | // preprocess UV transformations (scaling, translation ...)
aiProcess_FindInstances | // search for instanced meshes and remove them by references to one master
aiProcess_LimitBoneWeights | // limit bone weights to 4 per vertex
aiProcess_OptimizeMeshes | // join small meshes, if possible
// aiProcess_OptimizeGraph | // optimize unneeded nodes away
// aiProcess_PreTransformVertices |
0); 0);
// get the end time of zje operation, calculate delta t // get the end time of zje operation, calculate delta t

View File

@ -276,7 +276,10 @@ enum EClickPos
extern bool g_bPlay /*= false*/; extern bool g_bPlay /*= false*/;
extern double g_dCurrent; extern double g_dCurrent;
extern float g_smoothAngle /*= 90.f*/; extern float g_smoothAngle /*= 80.f*/;
extern unsigned int ppsteps,ppstepsdefault;
extern bool nopointslines;
} }
#endif // !! AV_MAIN_H_INCLUDED #endif // !! AV_MAIN_H_INCLUDED

View File

@ -1,7 +1,6 @@
// Microsoft Visual C++ generated resource script. // Microsoft Visual C++ generated resource script.
// //
#include "resource.h" #include "resource.h"
#include "../../mkutil/revision.h"
#define APSTUDIO_READONLY_SYMBOLS #define APSTUDIO_READONLY_SYMBOLS
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
@ -38,26 +37,24 @@ IDI_ASSIMP_VIEW ICON "../shared/assimp_tools_icon.ico
// Dialog // Dialog
// //
IDD_ABOUTBOX DIALOGEX 22, 17, 283, 169 IDD_ABOUTBOX DIALOGEX 22, 17, 283, 149
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_CAPTION | WS_SYSMENU STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_CAPTION | WS_SYSMENU
CAPTION "About Open Asset Import Library" CAPTION "About Open Asset Import Library"
FONT 10, "MS Shell Dlg", 400, 0, 0x0 FONT 9, "Courier New", 400, 0, 0x0
BEGIN BEGIN
LTEXT "Open Asset Import Library (Assimp)",IDC_STATIC,77,13,121,12 LTEXT "Open Asset Import Library (Assimp)",IDC_STATIC,30,14,144,9
LTEXT "A free C/C++ library for game && graphics developers. Developed by members of the german game development community www.zfx.info",IDC_STATIC,47,26,204,24 LTEXT "A free C/C++ library to read various well-known 3D model formats into a straightforward in-memory format that can be easily read and processed by applications. Licensed under a 3-clause BSD license.",IDC_STATIC,31,34,204,24
LTEXT "Thomas Schulze \t\taka <Schrompf> ",IDC_STATIC,55,80,192,8 LTEXT "(c) 2008-2009. Assimp Development Team. See the CREDITS file for a list of all contributors.",IDC_STATIC,30,65,204,23
LTEXT "Kim Kulling \t\t\taka <Kimmi> ",IDC_STATIC,55,92,186,8 CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,0,27,282,1
LTEXT "Rainer Schmidt \t\t\taka <Guru>",IDC_STATIC,55,104,180,8 LTEXT "http://assimp.sourceforge.net http://www.zfx.info",IDC_STATIC,31,101,127,22
LTEXT "Alexander Gessler\t\taka <Aramis>",IDC_STATIC,55,68,186,8 DEFPUSHBUTTON "Love this library",IDOK,186,110,84,14
CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,0,60,282,1
LTEXT "assimp.sourceforge.net",IDC_STATIC,7,137,78,8
DEFPUSHBUTTON "Love this library",IDOK,200,128,67,14
CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,0,148,283,1 CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,0,148,283,1
CONTROL 130,IDC_STATIC,"Static",SS_BITMAP,0,149,514,20 CONTROL 130,IDC_STATIC,"Static",SS_BITMAP,0,129,514,20
CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,0,10,281,1
END END
IDD_DIALOGMAIN DIALOGEX 0, 0, 594, 380 IDD_DIALOGMAIN DIALOGEX 0, 0, 594, 381
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
EXSTYLE WS_EX_ACCEPTFILES EXSTYLE WS_EX_ACCEPTFILES
CAPTION "Open Asset Import Library - ModelViewer " CAPTION "Open Asset Import Library - ModelViewer "
MENU IDR_MENU1 MENU IDR_MENU1
@ -74,9 +71,9 @@ BEGIN
CONTROL "Display normals",IDC_TOGGLENORMALS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,473,271,65,10 CONTROL "Display normals",IDC_TOGGLENORMALS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,473,271,65,10
CONTROL "Toggle AutoRotate",IDC_AUTOROTATE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,473,348,74,10 CONTROL "Toggle AutoRotate",IDC_AUTOROTATE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,473,348,74,10
EDITTEXT IDC_EVERT,504,11,32,12,ES_AUTOHSCROLL | ES_READONLY EDITTEXT IDC_EVERT,504,11,32,12,ES_AUTOHSCROLL | ES_READONLY
EDITTEXT IDC_EFACE,562,11,29,12,ES_AUTOHSCROLL | ES_READONLY EDITTEXT IDC_EFACE,565,11,29,12,ES_AUTOHSCROLL | ES_READONLY
EDITTEXT IDC_EMAT,562,24,29,12,ES_AUTOHSCROLL | ES_READONLY EDITTEXT IDC_EMAT,565,24,29,12,ES_AUTOHSCROLL | ES_READONLY
EDITTEXT IDC_EFPS,562,50,29,12,ES_AUTOHSCROLL | ES_READONLY EDITTEXT IDC_EFPS,565,50,29,12,ES_AUTOHSCROLL | ES_READONLY
CONTROL "Rotate light sources",IDC_LIGHTROTATE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,473,368,74,10 CONTROL "Rotate light sources",IDC_LIGHTROTATE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,473,368,74,10
CONTROL "Two lights",IDC_3LIGHTS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,473,281,48,10 CONTROL "Two lights",IDC_3LIGHTS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,473,281,48,10
LTEXT "Time:",IDC_LOADTIME,475,51,29,8 LTEXT "Time:",IDC_LOADTIME,475,51,29,8
@ -101,16 +98,16 @@ BEGIN
CONTROL 148,IDC_STATIC,"Static",SS_BITMAP | SS_CENTERIMAGE,470,229,114,9 CONTROL 148,IDC_STATIC,"Static",SS_BITMAP | SS_CENTERIMAGE,470,229,114,9
CONTROL 147,IDC_STATIC,"Static",SS_BITMAP | SS_CENTERIMAGE,470,336,114,9 CONTROL 147,IDC_STATIC,"Static",SS_BITMAP | SS_CENTERIMAGE,470,336,114,9
CONTROL 146,IDC_STATIC,"Static",SS_BITMAP | SS_CENTERIMAGE,470,65,114,9 CONTROL 146,IDC_STATIC,"Static",SS_BITMAP | SS_CENTERIMAGE,470,65,114,9
CONTROL "",IDC_STATIC,"Static",SS_ETCHEDVERT,469,0,1,380 CONTROL "",IDC_STATIC,"Static",SS_ETCHEDVERT,469,0,1,381
CONTROL 149,IDC_STATIC,"Static",SS_BITMAP | SS_CENTERIMAGE,584,0,10,9 CONTROL 149,IDC_STATIC,"Static",SS_BITMAP | SS_CENTERIMAGE,584,0,10,9
CONTROL 149,IDC_STATIC,"Static",SS_BITMAP | SS_CENTERIMAGE,584,65,10,9 CONTROL 149,IDC_STATIC,"Static",SS_BITMAP | SS_CENTERIMAGE,584,65,10,9
CONTROL 149,IDC_STATIC,"Static",SS_BITMAP | SS_CENTERIMAGE,583,229,10,9 CONTROL 149,IDC_STATIC,"Static",SS_BITMAP | SS_CENTERIMAGE,584,229,10,9
CONTROL 149,IDC_STATIC,"Static",SS_BITMAP | SS_CENTERIMAGE,584,336,10,9 CONTROL 149,IDC_STATIC,"Static",SS_BITMAP | SS_CENTERIMAGE,584,336,10,9
LTEXT "Nodes:",IDC_NUMNODES,476,26,24,8 LTEXT "Nodes:",IDC_NUMNODES,476,26,24,8
EDITTEXT IDC_ENODEWND,504,24,32,12,ES_AUTOHSCROLL | ES_READONLY EDITTEXT IDC_ENODEWND,504,24,32,12,ES_AUTOHSCROLL | ES_READONLY
CONTROL "",IDC_TREE1,"SysTreeView32",TVS_HASBUTTONS | TVS_HASLINES | TVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP,470,74,123,155 CONTROL "",IDC_TREE1,"SysTreeView32",TVS_HASBUTTONS | TVS_HASLINES | TVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP,471,74,123,155
LTEXT "Mesh:",IDC_NUMMESHES,540,39,20,8 LTEXT "Mesh:",IDC_NUMMESHES,540,39,20,8
EDITTEXT IDC_EMESH,562,37,29,12,ES_AUTOHSCROLL | ES_READONLY EDITTEXT IDC_EMESH,565,37,29,12,ES_AUTOHSCROLL | ES_READONLY
CONTROL "",IDC_STATIC,"Static",SS_ETCHEDVERT,567,238,1,93 CONTROL "",IDC_STATIC,"Static",SS_ETCHEDVERT,567,238,1,93
CONTROL "Button1",IDC_LCOLOR1,"Button",BS_OWNERDRAW | WS_TABSTOP,570,242,21,17 CONTROL "Button1",IDC_LCOLOR1,"Button",BS_OWNERDRAW | WS_TABSTOP,570,242,21,17
CONTROL "Button1",IDC_LCOLOR2,"Button",BS_OWNERDRAW | WS_TABSTOP,570,262,21,17 CONTROL "Button1",IDC_LCOLOR2,"Button",BS_OWNERDRAW | WS_TABSTOP,570,262,21,17
@ -156,18 +153,20 @@ BEGIN
CONTROL "",IDC_EDIT1,"RichEdit20A",ES_MULTILINE | ES_AUTOVSCROLL | ES_READONLY | ES_NUMBER | WS_VSCROLL | WS_TABSTOP,3,4,358,174,WS_EX_STATICEDGE CONTROL "",IDC_EDIT1,"RichEdit20A",ES_MULTILINE | ES_AUTOVSCROLL | ES_READONLY | ES_NUMBER | WS_VSCROLL | WS_TABSTOP,3,4,358,174,WS_EX_STATICEDGE
END END
IDD_DIALOGSMOOTH DIALOGEX 0, 0, 253, 86 IDD_DIALOGSMOOTH DIALOGEX 0, 0, 278, 141
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Set smooth limit " CAPTION "Set smooth limit "
FONT 8, "MS Shell Dlg", 400, 0, 0x1 FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN BEGIN
DEFPUSHBUTTON "OK",IDOK,195,53,50,14 DEFPUSHBUTTON "OK",IDOK,213,94,50,14
PUSHBUTTON "Cancel",IDCANCEL,143,53,50,14 PUSHBUTTON "Cancel",IDCANCEL,161,94,50,14
EDITTEXT IDC_EDITSM,107,7,139,14,ES_AUTOHSCROLL | ES_NUMBER EDITTEXT IDC_EDITSM,99,7,175,14,ES_AUTOHSCROLL | ES_NUMBER
LTEXT "Angle limit (in degrees):",IDC_STATIC,13,10,76,8 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,27,231,19 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
LTEXT "NOTE: use 'Smooth normals' to update the normals to the new settings",IDC_STATIC,12,75,230,8 CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,0,113,278,1
CONTROL "",IDC_STATIC,"Static",SS_ETCHEDHORZ,7,73,239,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 "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 END
@ -205,8 +204,8 @@ END
// //
VS_VERSION_INFO VERSIONINFO VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,SVNRevision,0 FILEVERSION 1,0,412,0
PRODUCTVERSION 1,0,SVNRevision,1 PRODUCTVERSION 1,0,412,1
FILEFLAGSMASK 0x17L FILEFLAGSMASK 0x17L
#ifdef _DEBUG #ifdef _DEBUG
FILEFLAGS 0x1L FILEFLAGS 0x1L
@ -249,7 +248,7 @@ BEGIN
IDD_ABOUTBOX, DIALOG IDD_ABOUTBOX, DIALOG
BEGIN BEGIN
TOPMARGIN, 1 TOPMARGIN, 1
BOTTOMMARGIN, 158 BOTTOMMARGIN, 138
END END
IDD_LOADDIALOG, DIALOG IDD_LOADDIALOG, DIALOG
@ -277,9 +276,9 @@ BEGIN
IDD_DIALOGSMOOTH, DIALOG IDD_DIALOGSMOOTH, DIALOG
BEGIN BEGIN
LEFTMARGIN, 7 LEFTMARGIN, 7
RIGHTMARGIN, 246 RIGHTMARGIN, 271
TOPMARGIN, 7 TOPMARGIN, 7
BOTTOMMARGIN, 79 BOTTOMMARGIN, 134
END END
END END
#endif // APSTUDIO_INVOKED #endif // APSTUDIO_INVOKED
@ -313,8 +312,36 @@ BEGIN
BEGIN BEGIN
MENUITEM "Open Asset", ID_VIEWER_OPEN MENUITEM "Open Asset", ID_VIEWER_OPEN
MENUITEM "Close Asset", ID_VIEWER_CLOSEASSET MENUITEM "Close Asset", ID_VIEWER_CLOSEASSET
MENUITEM "Reload", ID_VIEWER_RELOAD
POPUP "Import settings"
BEGIN
MENUITEM "Calculate Tangent Space", ID_VIEWER_PP_CTS
MENUITEM "Compute Indexed Meshes", ID_VIEWER_PP_JIV
MENUITEM "Optimize Materials", ID_VIEWER_PP_RRM2
MENUITEM "Optimize Meshes", ID_VIEWER_PP_OM
MENUITEM "Optimize Scenegraph", ID_VIEWER_PP_OG
MENUITEM "Find Instanced Meshes", ID_VIEWER_PP_FIM
MENUITEM "Run Full Validation", ID_VIEWER_PP_VDS
MENUITEM "Pretransform Vertices", ID_VIEWER_PP_PTV
MENUITEM "VCache Optimization", ID_VIEWER_PP_ICL
MENUITEM "Fix Infacing Normals", ID_VIEWER_PP_FIN
MENUITEM "Find Degenerates", ID_VIEWER_PP_FD
MENUITEM "Find Invalid Data", ID_VIEWER_PP_FID
MENUITEM "Generate UV Coords", ID_VIEWER_PP_GUV
MENUITEM "Transform UV Coords", ID_VIEWER_PP_TUV
MENUITEM "Remove Lines and Points", ID_VIEWER_PP_RLINE_PNT, GRAYED
MENUITEM SEPARATOR
MENUITEM "(required) Triangulate", ID_VIEWER_PP_JIV, GRAYED
MENUITEM "(required) Limit Bone Weights", ID_VIEWER_PP_JIV, GRAYED
MENUITEM "(required) Split Large Meshes", ID_VIEWER_PP_JIV, GRAYED
MENUITEM "(required) Sort by primitive type", ID_VIEWER_PP_JIV, GRAYED
MENUITEM "(required) Convert to Left-Handed", ID_VIEWER_PP_JIV, GRAYED
MENUITEM SEPARATOR
MENUITEM "Reset to default", ID_IMPORTSETTINGS_RESETTODEFAULT
MENUITEM "Open Post-Process Short Reference", ID_IMPORTSETTINGS_OPENPOST
END
MENUITEM SEPARATOR MENUITEM SEPARATOR
MENUITEM "Screenshot", ID_VIEWER_SAVESCREENSHOTTOFILE MENUITEM "Save Screenshot", ID_VIEWER_SAVESCREENSHOTTOFILE
MENUITEM "Reset view", ID_VIEWER_RESETVIEW MENUITEM "Reset view", ID_VIEWER_RESETVIEW
MENUITEM "Memory consumption", ID_VIEWER_MEMORYCONSUMATION MENUITEM "Memory consumption", ID_VIEWER_MEMORYCONSUMATION
MENUITEM SEPARATOR MENUITEM SEPARATOR
@ -352,12 +379,15 @@ BEGIN
BEGIN BEGIN
POPUP "Feedback" POPUP "Feedback"
BEGIN BEGIN
MENUITEM "Report bug", ID_FEEDBACK_GH MENUITEM "Report bug", ID_REPORTBUG
MENUITEM "Feature request", ID_FEEDBACK_FEATUREREQUEST MENUITEM "Feature request/discuss", ID_FR
END END
MENUITEM "Help", ID__HELP MENUITEM "Help", ID__HELP
MENUITEM SEPARATOR MENUITEM SEPARATOR
MENUITEM "About", ID__ABOUT MENUITEM "About", ID__ABOUT
MENUITEM SEPARATOR
MENUITEM "Website", ID__WEBSITE
MENUITEM "SF.net Project Page", ID__WEBSITESF
END END
END END

View File

@ -41,6 +41,7 @@
#define IDR_TXPOPUP 156 #define IDR_TXPOPUP 156
#define IDR_MATPOPUP 157 #define IDR_MATPOPUP 157
#define IDD_DIALOGSMOOTH 159 #define IDD_DIALOGSMOOTH 159
#define SVNRevision 412
#define IDC_CHECK1 1000 #define IDC_CHECK1 1000
#define IDC_TOGGLEMS 1000 #define IDC_TOGGLEMS 1000
#define IDC_CHECK2 1001 #define IDC_CHECK2 1001
@ -187,6 +188,33 @@
#define ID_SMOOTHANGLE_120 32849 #define ID_SMOOTHANGLE_120 32849
#define ID_SMOOTHANGLE_NONE 32850 #define ID_SMOOTHANGLE_NONE 32850
#define ID_TOOLS_SETANGLELIMIT 32851 #define ID_TOOLS_SETANGLELIMIT 32851
#define ID_VIEWER_PP_JIV 32852
#define ID_VIEWER_PP_RRM 32852
#define ID_VIEWER_PP_OM 32853
#define ID_VIEWER_PP_OG 32854
#define ID_VIEWER_PP_FIM 32855
#define ID_VIEWER_PP_VDS 32856
#define ID_VIEWER_PP_PTV 32857
#define ID_VIEWER_PP_ICL 32858
#define ID_VIEWER_PP_FIN 32859
#define ID_VIEWER_PP_FD 32860
#define ID_VIEWER_PP_FID 32861
#define ID_VIEWER_PP_GUV 32862
#define ID_VIEWER_PP_TUV 32863
#define ID_VIEWER_PP_RLINE_PNT 32864
#define ID_REPORTBUG 32865
#define ID_FR 32866
#define ID__WEBSITE 32867
#define ID__SF 32868
#define ID__ 32869
#define ID__WEBSITESF 32870
#define ID_IMPORTSETTINGS_CALCULATETANGENTSPACE 32871
#define ID_VIEWER_CTS 32872
#define ID_VIEWER_PP_CTS 32873
#define ID_VIEWER_RELOAD 32874
#define ID_VIEWER_PP_RRM2 32875
#define ID_IMPORTSETTINGS_RESETTODEFAULT 32876
#define ID_IMPORTSETTINGS_OPENPOST 32877
#define IDC_STATIC -1 #define IDC_STATIC -1
// Next default values for new objects // Next default values for new objects
@ -195,7 +223,7 @@
#ifndef APSTUDIO_READONLY_SYMBOLS #ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NO_MFC 1 #define _APS_NO_MFC 1
#define _APS_NEXT_RESOURCE_VALUE 160 #define _APS_NEXT_RESOURCE_VALUE 160
#define _APS_NEXT_COMMAND_VALUE 32852 #define _APS_NEXT_COMMAND_VALUE 32878
#define _APS_NEXT_CONTROL_VALUE 1057 #define _APS_NEXT_CONTROL_VALUE 1057
#define _APS_NEXT_SYMED_VALUE 110 #define _APS_NEXT_SYMED_VALUE 110
#endif #endif

View File

@ -1613,6 +1613,10 @@
Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav" Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav"
UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}" UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}"
> >
<File
RelativePath="..\..\tools\shared\assimp_tools_icon.ico"
>
</File>
<File <File
RelativePath="..\..\tools\assimp_view\assimp_view.ico" RelativePath="..\..\tools\assimp_view\assimp_view.ico"
> >