Fit meshes in window by material.

This commit is contained in:
kovacsv 2019-02-19 08:01:51 +01:00
parent eb0c93d266
commit cfcef0da61
4 changed files with 140 additions and 3 deletions

View File

@ -49,7 +49,7 @@ ImporterApp.prototype.Init = function ()
var myThis = this;
var top = document.getElementById ('top');
this.importerButtons = new ImporterButtons (top);
this.importerButtons.AddLogo ('Online 3D Viewer <span class="version">v 0.6.3</span>', function () { myThis.ShowAboutDialog (); });
this.importerButtons.AddLogo ('Online 3D Viewer <span class="version">v 0.6.4</span>', function () { myThis.ShowAboutDialog (); });
this.importerButtons.AddButton ('images/openfile.png', 'Open File', function () { myThis.OpenFile (); });
this.importerButtons.AddButton ('images/fitinwindow.png', 'Fit In Window', function () { myThis.FitInWindow (); });
this.importerButtons.AddToggleButton ('images/fixup.png', 'images/fixupgray.png', 'Enable/Disable Fixed Up Vector', function () { myThis.SetFixUp (); });
@ -221,11 +221,15 @@ ImporterApp.prototype.GenerateMenu = function ()
title : 'Show/Hide Information',
onOpen : function (contentDiv, material) {
contentDiv.empty ();
var materialbuttons = $('<div>').addClass ('submenubuttons').appendTo (contentDiv);
var highlightButton = $('<img>').addClass ('submenubutton').attr ('src', 'images/highlightmesh.png').attr ('title', 'Highlight Meshes With Material').appendTo (materialbuttons);
var materialButtons = $('<div>').addClass ('submenubuttons').appendTo (contentDiv);
var highlightButton = $('<img>').addClass ('submenubutton').attr ('src', 'images/highlightmesh.png').attr ('title', 'Highlight Meshes By Material').appendTo (materialButtons);
highlightButton.click (function () {
importerApp.HighlightMeshesByMaterial (materialIndex);
});
var fitInWindowButton = $('<img>').addClass ('submenubutton').attr ('src', 'images/fitinwindowsmall.png').attr ('title', 'Fit Meshes In Window By Material').appendTo (materialButtons);
fitInWindowButton.click (function () {
importerApp.FitMeshesByMaterialInWindow (materialIndex);
});
var table = new InfoTable (contentDiv);
table.AddColorRow ('Ambient', material.ambient);
table.AddColorRow ('Diffuse', material.diffuse);
@ -463,6 +467,15 @@ ImporterApp.prototype.FitMeshInWindow = function (meshIndex)
this.viewer.FitMeshInWindow (meshIndex);
};
ImporterApp.prototype.FitMeshesByMaterialInWindow = function (materialIndex)
{
var meshIndices = this.viewer.GetMeshesByMaterial (materialIndex);
if (meshIndices.length === 0) {
return;
}
this.viewer.FitMeshesInWindow (meshIndices);
};
ImporterApp.prototype.SetFixUp = function ()
{
this.viewer.SetFixUp ();

View File

@ -146,6 +146,19 @@ ImporterViewer.prototype.FitMeshInWindow = function (index)
this.viewer.FitMeshesInWindow (meshes);
};
ImporterViewer.prototype.FitMeshesInWindow = function (meshIndices)
{
var meshes = [];
this.viewer.scene.traverse (function (current) {
if (current instanceof THREE.Mesh) {
if (meshIndices.indexOf (current.originalJsonMeshIndex) != -1) {
meshes.push (current);
}
}
});
this.viewer.FitMeshesInWindow (meshes);
};
ImporterViewer.prototype.AdjustClippingPlanes = function ()
{
if (this.viewer.MeshCount () > 0) {

View File

@ -0,0 +1,6 @@
newmtl Material0
Kd 0.784314 0 0
newmtl Material1
Kd 0 0.784314 0
newmtl Material2
Kd 0 0 0.784314

View File

@ -0,0 +1,105 @@
mtllib multimesh3.mtl
g Mesh10
v -0.5 -0.5 -0.5
v 0.5 -0.5 -0.5
v 0.5 -0.5 0.5
v -0.5 -0.5 0.5
v -0.5 0.5 -0.5
v 0.5 0.5 -0.5
v 0.5 0.5 0.5
v -0.5 0.5 0.5
vn 0 -1 0
vn 0 -1 0
vn 1 0 0
vn 1 0 0
vn 0 1 0
vn 0 1 0
vn -1 0 0
vn -1 0 0
vn 0 0 -1
vn 0 0 -1
vn 0 0 1
vn 0 0 1
usemtl Material0
f 1//1 2//1 3//1
f 1//2 3//2 4//2
f 2//3 6//3 7//3
f 2//4 7//4 3//4
f 6//5 5//5 8//5
f 6//6 8//6 7//6
f 5//7 1//7 4//7
f 5//8 4//8 8//8
f 1//9 5//9 6//9
f 1//10 6//10 2//10
f 4//11 3//11 7//11
f 4//12 7//12 8//12
g Mesh11
v 1.5 -0.5 -0.5
v 2.5 -0.5 -0.5
v 2.5 -0.5 0.5
v 1.5 -0.5 0.5
v 1.5 0.5 -0.5
v 2.5 0.5 -0.5
v 2.5 0.5 0.5
v 1.5 0.5 0.5
vn 0 -1 0
vn 0 -1 0
vn 1 0 0
vn 1 0 0
vn 0 1 0
vn 0 1 0
vn -1 0 0
vn -1 0 0
vn 0 0 -1
vn 0 0 -1
vn 0 0 1
vn 0 0 1
usemtl Material1
f 9//13 10//13 11//13
f 9//14 11//14 12//14
f 10//15 14//15 15//15
f 10//16 15//16 11//16
f 14//17 13//17 16//17
f 14//18 16//18 15//18
f 13//19 9//19 12//19
f 13//20 12//20 16//20
f 9//21 13//21 14//21
f 9//22 14//22 10//22
f 12//23 11//23 15//23
f 12//24 15//24 16//24
g Mesh12
v 3.5 -0.5 -0.5
v 4.5 -0.5 -0.5
v 4.5 -0.5 0.5
v 3.5 -0.5 0.5
v 3.5 0.5 -0.5
v 4.5 0.5 -0.5
v 4.5 0.5 0.5
v 3.5 0.5 0.5
vn 0 -1 0
vn 0 -1 0
vn 1 0 0
vn 1 0 0
vn 0 1 0
vn 0 1 0
vn -1 0 0
vn -1 0 0
vn 0 0 -1
vn 0 0 -1
vn 0 0 1
vn 0 0 1
usemtl Material0
f 17//25 18//25 19//25
usemtl Material1
f 17//26 19//26 20//26
usemtl Material2
f 18//27 22//27 23//27
f 18//28 23//28 19//28
f 22//29 21//29 24//29
f 22//30 24//30 23//30
f 21//31 17//31 20//31
f 21//32 20//32 24//32
f 17//33 21//33 22//33
f 17//34 22//34 18//34
f 20//35 19//35 23//35
f 20//36 23//36 24//36