소스 검색

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 년 전
부모
커밋
c29e985f12
6개의 변경된 파일169개의 추가작업 그리고 86개의 파일을 삭제
  1. 60 3
      tools/assimp_view/Display.cpp
  2. 30 1
      tools/assimp_view/Display.h
  3. 11 11
      tools/assimp_view/MessageProc.cpp
  4. 2 2
      tools/assimp_view/assimp_view.cpp
  5. 65 69
      tools/assimp_view/assimp_view.rc
  6. 1 0
      tools/assimp_view/resource.h

+ 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