Browse Source

AssimpView now displays meshes and mroe detailled statistics in the scene browser.
Improve the user interface. takes more screen space now, but provides more information and less clumsy buttons.

git-svn-id: https://assimp.svn.sourceforge.net/svnroot/assimp/trunk@731 67173fc5-114c-0410-ac8e-9d2fd5bffc1f

aramis_acg 15 năm trước cách đây
mục cha
commit
c29e985f12

+ 60 - 3
tools/assimp_view/Display.cpp

@@ -155,7 +155,7 @@ int CDisplay::AddNodeToDisplayList(
 	ai_assert(NULL != pcNode);
 	ai_assert(NULL != hRoot);
 
-	char chTemp[512];
+	char chTemp[MAXLEN];
 
 	if(0 == pcNode->mName.length)	{
 		if (iIndex >= 100)	{
@@ -166,9 +166,11 @@ int CDisplay::AddNodeToDisplayList(
 			iIndex += iDepth  * 100;
 		}
 		else iIndex += iDepth  * 10;
-		sprintf(chTemp,"Node %i",iIndex);
+		sprintf(chTemp,"Node %i (%i meshes)",iIndex,pcNode->mNumMeshes);
+	}
+	else {
+		sprintf(chTemp,"%s (%i meshes)",pcNode->mName.data,pcNode->mNumMeshes);
 	}
-	else strcpy(chTemp,pcNode->mName.data);
 
 	TVITEMEXW tvi; 
 	TVINSERTSTRUCTW sNew;
@@ -207,6 +209,53 @@ int CDisplay::AddNodeToDisplayList(
 	this->AddNode(info);
 	return 1;
 }
+
+//-------------------------------------------------------------------------------
+int CDisplay::AddMeshToDisplayList(unsigned int iIndex, HTREEITEM hRoot)
+{
+	aiMesh* pcMesh = g_pcAsset->pcScene->mMeshes[iIndex];
+
+	char chTemp[MAXLEN];
+
+	if(0 == pcMesh->mName.length)	{
+		sprintf(chTemp,"Mesh %i (%i faces)",iIndex,pcMesh->mNumFaces);
+	}
+	else {
+		sprintf(chTemp,"%s (%i faces)",pcMesh->mName.data,pcMesh->mNumFaces);
+	}
+
+	TVITEMEXW tvi; 
+	TVINSERTSTRUCTW sNew;
+	
+	wchar_t tmp[512];
+	int t = MultiByteToWideChar(CP_UTF8,0,chTemp,-1,tmp,512);
+	
+	tvi.pszText = tmp;
+	tvi.cchTextMax = (int)t;
+
+	tvi.mask = TVIF_TEXT | TVIF_SELECTEDIMAGE | TVIF_IMAGE | TVIF_HANDLE | TVIF_PARAM;
+	tvi.iImage = this->m_aiImageList[AI_VIEW_IMGLIST_NODE];
+	tvi.iSelectedImage = this->m_aiImageList[AI_VIEW_IMGLIST_NODE];
+	tvi.lParam = (LPARAM)5; 
+
+	sNew.itemex = tvi; 
+	sNew.hInsertAfter = TVI_LAST; 
+	sNew.hParent = hRoot;
+
+	// add the item to the list
+	HTREEITEM hTexture = (HTREEITEM)SendMessage(GetDlgItem(g_hDlg,IDC_TREE1), 
+		TVM_INSERTITEMW, 
+		0,
+		(LPARAM)(LPTVINSERTSTRUCT)&sNew);
+
+	// add the mesh to the list of all mesh entries in the scene browser
+	MeshInfo info;
+	info.hTreeItem = hTexture;
+	info.psMesh = pcMesh;
+	AddMesh(info);
+	return 1;
+}
+
 //-------------------------------------------------------------------------------
 // Replace the currently selected texture by another one
 int CDisplay::ReplaceCurrentTexture(const char* szPath)
@@ -685,6 +734,10 @@ int CDisplay::FillDisplayList(void)
 	for (unsigned int i = 0; i < g_pcAsset->pcScene->mNumMaterials;++i)
 		AddMaterialToDisplayList(m_hRoot,i);
 
+	// add each mesh to the tree
+	for (unsigned int i = 0; i < g_pcAsset->pcScene->mNumMeshes;++i)
+		AddMeshToDisplayList(i,m_hRoot);
+
 	// now add all loaded nodes recursively
 	AddNodeToDisplayList(0,0,g_pcAsset->pcScene->mRootNode,m_hRoot);
 
@@ -822,6 +875,7 @@ int CDisplay::Reset(void)
 	m_asMaterials.clear();
 	m_asTextures.clear();
 	m_asNodes.clear();
+	m_asMeshes.clear();
 
 	m_hRoot = NULL;
 
@@ -1646,6 +1700,9 @@ int CDisplay::DrawHUD()
 	as[0].x -= 0.5f;as[1].x -= 0.5f;as[2].x -= 0.5f;as[3].x -= 0.5f;
 	as[0].y -= 0.5f;as[1].y -= 0.5f;as[2].y -= 0.5f;as[3].y -= 0.5f;
 
+	g_piDevice->SetSamplerState(0,D3DSAMP_MAGFILTER,D3DTEXF_LINEAR);
+	g_piDevice->SetSamplerState(0,D3DSAMP_MINFILTER,D3DTEXF_LINEAR);
+
 	// draw the screen-filling squad
 	DWORD dw2;g_piDevice->GetFVF(&dw2);
 	g_piDevice->SetFVF(D3DFVF_XYZRHW | D3DFVF_TEX1);

+ 30 - 1
tools/assimp_view/Display.h

@@ -150,6 +150,17 @@ public:
 		HTREEITEM hTreeItem;
 	};
 
+	//------------------------------------------------------------------
+	// represents a mesh in the tree view
+	struct MeshInfo
+	{
+		// the mesh object
+		aiMesh* psMesh;
+
+		// corresponding tree view item
+		HTREEITEM hTreeItem;
+	};
+
 	//------------------------------------------------------------------
 	// represents a material in the tree view
 	struct MaterialInfo
@@ -240,7 +251,7 @@ public:
 
 	//------------------------------------------------------------------
 	// Add a node to the display list
-	// Recusrivly add all subnodes
+	// Recusrivly adds all subnodes as well
 	// iIndex - Index of the node in the parent's child list
 	// iDepth - Current depth of the node
 	// pcNode - Node object
@@ -251,6 +262,14 @@ public:
 		aiNode* pcNode,
 		HTREEITEM hRoot);
 
+	//------------------------------------------------------------------
+	// Add a mesh to the display list
+	// iIndex - Index of the mesh in the scene's mesh list
+	// hRoot - Parent tree view node
+	int AddMeshToDisplayList(
+		unsigned int iIndex, 
+		HTREEITEM hRoot);
+
 	//------------------------------------------------------------------
 	// Load the image list for the tree view item
 	int LoadImageList(void);
@@ -350,6 +369,13 @@ public:
 		this->m_asNodes.push_back(info);
 	}
 
+	//------------------------------------------------------------------
+	// add a new mesh to the list
+	inline void AddMesh(const MeshInfo& info)
+	{
+		this->m_asMeshes.push_back(info);
+	}
+
 	//------------------------------------------------------------------
 	// add a new material to the list
 	inline void AddMaterial(const MaterialInfo& info)
@@ -469,6 +495,9 @@ private:
 	// List of all node in the display CB
 	std::vector<NodeInfo> m_asNodes;
 
+	// List of all node in the display CB
+	std::vector<MeshInfo> m_asMeshes;
+
 	// current Node or NULL if no Node is active
 	NodeInfo* m_pcCurrentNode;
 

+ 11 - 11
tools/assimp_view/MessageProc.cpp

@@ -412,7 +412,7 @@ void ToggleUIState()
 	DWORD dwValue;
 	if (BST_UNCHECKED == IsDlgButtonChecked(g_hDlg,IDC_BLUBB))
 	{
-		SetWindowPos(g_hDlg,NULL,0,0,sRect.right-188,sRect.bottom,
+		SetWindowPos(g_hDlg,NULL,0,0,sRect.right-214,sRect.bottom,
 			SWP_NOMOVE | SWP_NOZORDER);
 
 		dwValue = 0;
@@ -421,7 +421,7 @@ void ToggleUIState()
 	}
 	else
 	{
-		SetWindowPos(g_hDlg,NULL,0,0,sRect.right+188,sRect.bottom,
+		SetWindowPos(g_hDlg,NULL,0,0,sRect.right+214,sRect.bottom,
 			SWP_NOMOVE | SWP_NOZORDER);
 
 		dwValue = 1;
@@ -1027,7 +1027,7 @@ void InitUI()
 		sRect2.left -= sRect.left;
 		sRect2.top -= sRect.top;
 
-		SetWindowPos(g_hDlg,NULL,0,0,sRect.right-188,sRect.bottom,
+		SetWindowPos(g_hDlg,NULL,0,0,sRect.right-214,sRect.bottom,
 			SWP_NOMOVE | SWP_NOZORDER);
 		SetWindowText(GetDlgItem(g_hDlg,IDC_BLUBB),">>");
 	}
@@ -1361,7 +1361,7 @@ INT_PTR CALLBACK MessageProc(HWND hwndDlg,UINT uMsg,
 						r = (unsigned char)(CDisplay::Instance().GetFirstCheckerColor()->x * 255.0f);
 						g = (unsigned char)(CDisplay::Instance().GetFirstCheckerColor()->y * 255.0f);
 						b = (unsigned char)(CDisplay::Instance().GetFirstCheckerColor()->z * 255.0f);
-						szText = "B0";
+						szText = "Background #0";
 					}
 					else if (!g_pcAsset)
 					{
@@ -1372,7 +1372,7 @@ INT_PTR CALLBACK MessageProc(HWND hwndDlg,UINT uMsg,
 						r = (unsigned char)((g_avLightColors[0] >> 16) & 0xFF);
 						g = (unsigned char)((g_avLightColors[0] >> 8) & 0xFF);
 						b = (unsigned char)((g_avLightColors[0]) & 0xFF);
-						szText = "L0";
+						szText = "Light #0";
 					}
 					HBRUSH hbr = CreateSolidBrush(RGB(r,g,b));
 
@@ -1381,7 +1381,7 @@ INT_PTR CALLBACK MessageProc(HWND hwndDlg,UINT uMsg,
 
 					SetTextColor(pcStruct->hDC,RGB(0xFF-r,0xFF-g,0xFF-b));
 					SetBkMode(pcStruct->hDC,TRANSPARENT);
-					TextOut(pcStruct->hDC,4,1,szText,2);
+					TextOut(pcStruct->hDC,4,1,szText,strlen(szText));
 					bDraw = true;
 				}
 				else if(IDC_LCOLOR2 == pcStruct->CtlID)
@@ -1394,7 +1394,7 @@ INT_PTR CALLBACK MessageProc(HWND hwndDlg,UINT uMsg,
 						r = (unsigned char)(CDisplay::Instance().GetSecondCheckerColor()->x * 255.0f);
 						g = (unsigned char)(CDisplay::Instance().GetSecondCheckerColor()->y * 255.0f);
 						b = (unsigned char)(CDisplay::Instance().GetSecondCheckerColor()->z * 255.0f);
-						szText = "B1";
+						szText = "Background #1";
 					}
 					else if (!g_pcAsset)
 					{
@@ -1405,14 +1405,14 @@ INT_PTR CALLBACK MessageProc(HWND hwndDlg,UINT uMsg,
 						r = (unsigned char)((g_avLightColors[1] >> 16) & 0xFF);
 						g = (unsigned char)((g_avLightColors[1] >> 8) & 0xFF);
 						b = (unsigned char)((g_avLightColors[1]) & 0xFF);
-						szText = "L1";
+						szText = "Light #1";
 					}
 					HBRUSH hbr = CreateSolidBrush(RGB(r,g,b));
 					FillRect(pcStruct->hDC,&sRect,hbr);
 
 					SetTextColor(pcStruct->hDC,RGB(0xFF-r,0xFF-g,0xFF-b));
 					SetBkMode(pcStruct->hDC,TRANSPARENT);
-					TextOut(pcStruct->hDC,4,1,szText,2);
+					TextOut(pcStruct->hDC,4,1,szText,strlen(szText));
 					bDraw = true;
 				}
 				else if(IDC_LCOLOR3 == pcStruct->CtlID)
@@ -1434,14 +1434,14 @@ INT_PTR CALLBACK MessageProc(HWND hwndDlg,UINT uMsg,
 						r = (unsigned char)((g_avLightColors[2] >> 16) & 0xFF);
 						g = (unsigned char)((g_avLightColors[2] >> 8) & 0xFF);
 						b = (unsigned char)((g_avLightColors[2]) & 0xFF);
-						szText = "A0";
+						szText = "Ambient";
 					}
 					HBRUSH hbr = CreateSolidBrush(RGB(r,g,b));
 					FillRect(pcStruct->hDC,&sRect,hbr);
 				
 					SetTextColor(pcStruct->hDC,RGB(0xFF-r,0xFF-g,0xFF-b));
 					SetBkMode(pcStruct->hDC,TRANSPARENT);
-					TextOut(pcStruct->hDC,4,1,szText,2);
+					TextOut(pcStruct->hDC,4,1,szText,strlen(szText));
 					bDraw = true;
 				}
 				// draw the black border around the rects

+ 2 - 2
tools/assimp_view/assimp_view.cpp

@@ -198,10 +198,10 @@ int LoadAsset(void)
 	char szTemp[MAX_PATH+64];
 	sprintf(szTemp,"Starting to load %s",g_szFileName);
 	CLogWindow::Instance().WriteLine(
-		"****************************************************************************");
+		"----------------------------------------------------------------------------");
 	CLogWindow::Instance().WriteLine(szTemp);
 	CLogWindow::Instance().WriteLine(
-		"****************************************************************************");
+		"----------------------------------------------------------------------------");
 	CLogWindow::Instance().SetAutoUpdate(false);
 
 	// create a helper thread to load the asset

+ 65 - 69
tools/assimp_view/assimp_view.rc

@@ -1,7 +1,6 @@
 // Microsoft Visual C++ generated resource script.
 //
 #include "resource.h"
-#include "..\\..\\revision.h"
 
 #define APSTUDIO_READONLY_SYMBOLS
 /////////////////////////////////////////////////////////////////////////////
@@ -54,75 +53,67 @@ BEGIN
     CONTROL         "",IDC_STATIC,"Static",SS_ETCHEDHORZ,0,10,281,1
 END
 
-IDD_DIALOGMAIN DIALOGEX 0, 0, 594, 381
-STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
-EXSTYLE WS_EX_ACCEPTFILES
+IDD_DIALOGMAIN DIALOGEX 0, 0, 615, 485
+STYLE DS_SETFONT | DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU
+EXSTYLE WS_EX_TOPMOST | WS_EX_ACCEPTFILES | WS_EX_WINDOWEDGE
 CAPTION "Open Asset Import Library - ModelViewer "
 MENU IDR_MENU1
-FONT 8, "MS Shell Dlg", 400, 0, 0x1
+FONT 8, "Microsoft Sans Serif", 400, 0, 0x0
 BEGIN
-    CONTROL         "",IDC_RT,"Static",SS_OWNERDRAW,3,5,462,351
-    CONTROL         "Multisampling",IDC_TOGGLEMS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,473,241,80,10
-    CONTROL         "Wireframe",IDC_TOGGLEWIRE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,473,251,49,10
-    CONTROL         "No materials",IDC_TOGGLEMAT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,473,261,55,10
-    LTEXT           "Verts:",IDC_NUMVERTS,475,14,27,8
-    LTEXT           "Faces:\t",IDC_NUMFACES,539,14,22,8
-    LTEXT           "Mats:",IDC_NUMMATS,540,26,20,8
-    LTEXT           "FPS:",IDC_FPS,540,51,20,8
-    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
-    EDITTEXT        IDC_EVERT,504,11,32,12,ES_AUTOHSCROLL | ES_READONLY
-    EDITTEXT        IDC_EFACE,565,11,29,12,ES_AUTOHSCROLL | ES_READONLY
-    EDITTEXT        IDC_EMAT,565,24,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         "Two lights",IDC_3LIGHTS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,473,281,48,10
-    LTEXT           "Time:",IDC_LOADTIME,475,51,29,8
-    EDITTEXT        IDC_ELOAD,504,50,32,12,ES_AUTOHSCROLL | ES_READONLY
-    CONTROL         "Zoom/Rotate",IDC_ZOOM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,473,358,58,10
-    CONTROL         "Low quality",IDC_LOWQUALITY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,473,291,74,10
-    CONTROL         "No specular ",IDC_NOSPECULAR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,473,301,74,10
-    LTEXT           "Shd:",IDC_NUMSHADERS,476,40,23,8
-    EDITTEXT        IDC_ESHADER,504,37,32,12,ES_AUTOHSCROLL | ES_READONLY
-    LTEXT           "[M]",IDC_STATIC,553,241,11,8
-    LTEXT           "[W]",IDC_STATIC,553,251,11,8
-    LTEXT           "[D]",IDC_STATIC,553,261,11,8
-    LTEXT           "[N]",IDC_STATIC,553,271,11,8
-    LTEXT           "[L]",IDC_STATIC,553,281,11,8
-    LTEXT           "[P]",IDC_STATIC,553,291,11,8
-    LTEXT           "[S]",IDC_STATIC,553,301,11,8
-    LTEXT           "[A]",IDC_STATIC,552,348,11,8
-    LTEXT           "[Z]",IDC_STATIC,552,358,11,8
-    LTEXT           "[R]",IDC_STATIC,552,368,11,8
-    COMBOBOX        IDC_COMBO1,353,361,84,30,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
-    CONTROL         149,IDC_STATIC,"Static",SS_BITMAP | SS_CENTERIMAGE,470,0,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         146,IDC_STATIC,"Static",SS_BITMAP | SS_CENTERIMAGE,470,65,114,9
-    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,65,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
-    LTEXT           "Nodes:",IDC_NUMNODES,476,26,24,8
-    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,471,74,123,155
-    LTEXT           "Mesh:",IDC_NUMMESHES,540,39,20,8
-    EDITTEXT        IDC_EMESH,565,37,29,12,ES_AUTOHSCROLL | ES_READONLY
-    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_LCOLOR2,"Button",BS_OWNERDRAW | WS_TABSTOP,570,262,21,17
-    CONTROL         "Button1",IDC_LCOLOR3,"Button",BS_OWNERDRAW | WS_TABSTOP,570,282,21,17
-    PUSHBUTTON      "R",IDC_LRESET,576,300,15,11,BS_BOTTOM
-    EDITTEXT        IDC_VIEWMATRIX,475,24,61,38,ES_MULTILINE | ES_AUTOHSCROLL | ES_READONLY | NOT WS_VISIBLE
-    CONTROL         "Show skeleton",IDC_SHOWSKELETON,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,473,312,74,10
-    LTEXT           "[K]",IDC_STATIC,553,312,11,8
-    CONTROL         "<<",IDC_BLUBB,"Button",BS_AUTOCHECKBOX | BS_PUSHLIKE | WS_TABSTOP,439,361,27,15
-    LTEXT           "[C]",IDC_STATIC,553,323,11,8
-    CONTROL         "",IDC_SLIDERANIM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,0,362,322,15
-    PUSHBUTTON      "Play",IDC_PLAY,326,361,25,15
-    CONTROL         "Backface culling",IDC_BFCULL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,473,323,74,10
-    CONTROL         "",IDC_STATIC,"Static",SS_ETCHEDHORZ,0,358,470,1
+    CONTROL         "Multisampling",IDC_TOGGLEMS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,9,394,56,12
+    CONTROL         "Wireframe",IDC_TOGGLEWIRE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,9,404,57,12
+    CONTROL         "No materials",IDC_TOGGLEMAT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,9,415,64,12
+    LTEXT           "Verts:",IDC_NUMVERTS,220,400,31,9
+    LTEXT           "Faces:\t",IDC_NUMFACES,295,400,26,9
+    LTEXT           "Mats:",IDC_NUMMATS,295,413,23,9
+    LTEXT           "FPS:",IDC_FPS,295,442,23,9
+    CONTROL         "Display normals",IDC_TOGGLENORMALS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,9,425,62,12
+    CONTROL         "Toggle AutoRotate",IDC_AUTOROTATE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,109,394,87,12
+    EDITTEXT        IDC_EVERT,253,396,37,14,ES_AUTOHSCROLL | ES_READONLY
+    EDITTEXT        IDC_EFACE,322,396,34,14,ES_AUTOHSCROLL | ES_READONLY
+    EDITTEXT        IDC_EMAT,322,411,34,14,ES_AUTOHSCROLL | ES_READONLY
+    EDITTEXT        IDC_EFPS,322,441,34,14,ES_AUTOHSCROLL | ES_READONLY
+    CONTROL         "Rotate light sources",IDC_LIGHTROTATE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,109,416,87,12
+    CONTROL         "Two lights",IDC_3LIGHTS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,109,427,56,12
+    LTEXT           "Time:",IDC_LOADTIME,220,442,34,9
+    EDITTEXT        IDC_ELOAD,253,441,37,14,ES_AUTOHSCROLL | ES_READONLY
+    CONTROL         "Zoom/Rotate",IDC_ZOOM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,109,405,68,12
+    CONTROL         "Low quality",IDC_LOWQUALITY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,9,435,48,12
+    CONTROL         "No specular ",IDC_NOSPECULAR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,9,446,50,12
+    LTEXT           "Shd:",IDC_NUMSHADERS,221,430,27,9
+    EDITTEXT        IDC_ESHADER,253,426,37,14,ES_AUTOHSCROLL | ES_READONLY
+    LTEXT           "[M]",IDC_STATIC,84,394,13,9
+    LTEXT           "[W]",IDC_STATIC,84,404,13,9
+    LTEXT           "[D]",IDC_STATIC,84,470,13,9
+    LTEXT           "[N]",IDC_STATIC,84,415,13,9
+    LTEXT           "[L]",IDC_STATIC,194,428,13,9
+    LTEXT           "[P]",IDC_STATIC,84,425,13,9
+    LTEXT           "[S]",IDC_STATIC,84,437,13,9
+    LTEXT           "[A]",IDC_STATIC,194,395,13,9
+    LTEXT           "[Z]",IDC_STATIC,194,406,13,9
+    LTEXT           "[R]",IDC_STATIC,194,417,13,9
+    COMBOBOX        IDC_COMBO1,332,372,98,30,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP
+    LTEXT           "Nodes:",IDC_NUMNODES,221,413,28,9
+    EDITTEXT        IDC_ENODEWND,253,411,37,14,ES_AUTOHSCROLL | ES_READONLY
+    CONTROL         "",IDC_TREE1,"SysTreeView32",TVS_HASBUTTONS | TVS_HASLINES | TVS_SHOWSELALWAYS | WS_BORDER | WS_TABSTOP,473,0,142,484
+    LTEXT           "Mesh:",IDC_NUMMESHES,295,428,23,9
+    EDITTEXT        IDC_EMESH,322,426,34,14,ES_AUTOHSCROLL | ES_READONLY
+    CONTROL         "",IDC_STATIC,"Static",SS_ETCHEDVERT,100,392,1,87
+    CONTROL         "Button1",IDC_LCOLOR1,"Button",BS_OWNERDRAW | WS_TABSTOP,400,396,59,20
+    CONTROL         "Button1",IDC_LCOLOR2,"Button",BS_OWNERDRAW | WS_TABSTOP,400,418,59,20
+    CONTROL         "Button1",IDC_LCOLOR3,"Button",BS_OWNERDRAW | WS_TABSTOP,400,440,59,20
+    PUSHBUTTON      "Reset",IDC_LRESET,421,464,37,13,BS_BOTTOM
+    EDITTEXT        IDC_VIEWMATRIX,220,411,71,44,ES_MULTILINE | ES_AUTOHSCROLL | ES_READONLY | NOT WS_VISIBLE
+    CONTROL         "Show skeleton",IDC_SHOWSKELETON,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,9,457,58,12
+    LTEXT           "[K]",IDC_STATIC,84,447,13,9
+    CONTROL         "<<",IDC_BLUBB,"Button",BS_AUTOCHECKBOX | BS_PUSHLIKE | WS_TABSTOP,431,372,39,14
+    LTEXT           "[C]",IDC_STATIC,84,459,13,9
+    CONTROL         "",IDC_SLIDERANIM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_BOTH | TBS_NOTICKS | WS_TABSTOP,0,372,300,16
+    PUSHBUTTON      "Play",IDC_PLAY,301,372,29,13
+    CONTROL         "Backface culling",IDC_BFCULL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,9,468,65,12
+    CONTROL         "",IDC_STATIC,"Static",SS_ETCHEDVERT,209,392,1,70
+    CONTROL         "",IDC_RT,"Static",SS_OWNERDRAW,0,0,473,370
+    CONTROL         "",IDC_STATIC,"Static",SS_ETCHEDHORZ,1,388,469,1
 END
 
 IDD_LOADDIALOG DIALOGEX 0, 0, 143, 60
@@ -205,8 +196,8 @@ END
 //
 
 VS_VERSION_INFO VERSIONINFO
- FILEVERSION 1,1,SVNRevision,0
- PRODUCTVERSION 1,1,SVNRevision,1
+ FILEVERSION 1,1,700,0
+ PRODUCTVERSION 1,1,700,1
  FILEFLAGSMASK 0x17L
 #ifdef _DEBUG
  FILEFLAGS 0x1L
@@ -252,6 +243,11 @@ BEGIN
         BOTTOMMARGIN, 138
     END
 
+    IDD_DIALOGMAIN, DIALOG
+    BEGIN
+        BOTTOMMARGIN, 484
+    END
+
     IDD_LOADDIALOG, DIALOG
     BEGIN
         LEFTMARGIN, 7

+ 1 - 0
tools/assimp_view/resource.h

@@ -41,6 +41,7 @@
 #define IDR_TXPOPUP                     156
 #define IDR_MATPOPUP                    157
 #define IDD_DIALOGSMOOTH                159
+#define SVNRevision                     700
 #define IDC_CHECK1                      1000
 #define IDC_TOGGLEMS                    1000
 #define IDC_CHECK2                      1001