From ab9e1281ca1ccb3e5d01eb24934f81c1072114f2 Mon Sep 17 00:00:00 2001 From: Normand Briere <nbriere@noware.ca> Date: Thu, 12 Sep 2019 21:14:10 -0400 Subject: [PATCH] Four new presets + sort option. --- ObjEditor.java | 118 ++++++++++++++++++++++++++++++++++++--- fullscenes/skullcove.png | 0 BoundaryRep.java | 3 CameraPane.java | 18 +++++ cMaterial.java | 2 fullscenes/yvoire.png | 0 fullscenes/viking.png | 0 Object3D.java | 34 +++++++---- fullscenes/alsace.png | 0 9 files changed, 149 insertions(+), 26 deletions(-) diff --git a/BoundaryRep.java b/BoundaryRep.java index 8891b1a..6fecd44 100644 --- a/BoundaryRep.java +++ b/BoundaryRep.java @@ -7,7 +7,8 @@ class BoundaryRep implements java.io.Serializable { - static final long serialVersionUID = -4852664309425035321L; + static final long serialVersionUID = // VERY old 2008 -5762968998168738314L; + -4852664309425035321L; transient int displaylist = 0; diff --git a/CameraPane.java b/CameraPane.java index f05e777..232593d 100644 --- a/CameraPane.java +++ b/CameraPane.java @@ -3601,6 +3601,8 @@ }; /**/ + static Object3D lastObject; + //com.sun.opengl.util.texture.Texture TextureData GetFileTexture(String name, boolean bump, int resolution) @@ -3637,6 +3639,8 @@ // return null; //if (i == 2) // return null; + // TIFF issue sept 2019 + System.err.println("lastObject = " + lastObject); e.printStackTrace(); name = name.split("\\.tif")[0] + ".jpg"; } @@ -15753,6 +15757,16 @@ break; case 'l': lightMode ^= true; + if (lightMode) + { + keepshadow = Globals.RENDERSHADOW; + Globals.RENDERSHADOW = false; + } + else + { + Globals.RENDERSHADOW = keepshadow; + } + Globals.lighttouched = true; manipCamera = renderCamera = lightMode ? lightCamera : eyeCamera; targetLookAt.set(manipCamera.lookAt); @@ -17410,7 +17424,7 @@ float depth = depths[y * TEX_SIZE + x]; - if (pointselection && mouseMode == SELECT && depth != 0 && depth != 1) + if (pointselection && (mouseMode & SELECT) == SELECT && depth != 0 && depth != 1) { pointselection = false; @@ -18075,6 +18089,8 @@ boolean OCCLUSION_CULLING = false; //true; public boolean lightMode = false; + private boolean keepshadow; + public boolean capsLocked = false; // VR static public int indexcount = 0; diff --git a/ObjEditor.java b/ObjEditor.java index 4f82f20..d6747b4 100644 --- a/ObjEditor.java +++ b/ObjEditor.java @@ -799,6 +799,8 @@ // SendInfo(" delay: " + sel.delay + newline, "regular"); // live, hide, ... //?? SendInfo(" Orig: " + maxima + newline, "regular"); + if (sel.GetTextures().pigmentdata != null) + si.SendInfo(" EMBEDDED ", "regular"); si.SendInfo((debug ? " Texture: " : " ") + sel.GetTextures(), "bold"); // SendInfo((debug ? " Material: " : " ") + sel.material + newline, "regular"); if (sel instanceof cMesh) @@ -1169,6 +1171,7 @@ JCheckBox selectableCB; JCheckBox hideCB; JCheckBox link2masterCB; + JCheckBox sortCB; JCheckBox markCB; JCheckBox randomCB; JCheckBox speedupCB; @@ -1412,11 +1415,14 @@ rewindCB = AddCheckBox(setupPanel2, "Rewind", copy.rewind); rewindCB.setToolTipText("Rewind animation"); + sortCB = AddCheckBox(setupPanel2, "Sort", copy.sort); + sortCB.setToolTipText("Display from back to front"); + randomCB = AddCheckBox(setupPanel2, "Random", copy.random); randomCB.setToolTipText("Randomly Rewind (or Go back and forth)"); link2masterCB = AddCheckBox(setupPanel2, GetSupportText(), copy.link2master); - link2masterCB.setToolTipText("Attach to support"); + link2masterCB.setToolTipText("Link to support"); if (Globals.ADVANCED) { @@ -1847,6 +1853,28 @@ cButton fullsceneButton; + fullscenePanel.add(fullsceneButton = GetButton("fullscenes/alsace.png", !Globals.NIMBUSLAF)); + fullsceneButton.setToolTipText("Alsace!"); + fullsceneButton.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + ReadGFD("https://www.noaofarc.ca/akeeba/categories/Applications/Alsace.gfd", new iCallBack() + { + + public void Callback(Object obj) + { + LoadIt(obj); + } + + public void DragGesture() + { + } + }); + } + }); + fullscenePanel.add(fullsceneButton = GetButton("fullscenes/london.png", !Globals.NIMBUSLAF)); fullsceneButton.setToolTipText("Old London!"); fullsceneButton.addActionListener(new ActionListener() @@ -1854,7 +1882,7 @@ @Override public void actionPerformed(ActionEvent e) { - /*Object3D readobj =*/ ReadGFD("https://www.noaofarc.ca/akeeba/categories/Applications/oldlondon.gfd", new iCallBack() + ReadGFD("https://www.noaofarc.ca/akeeba/categories/Applications/oldlondon.gfd", new iCallBack() { public void Callback(Object obj) @@ -1869,6 +1897,8 @@ } }); + fullscenePanel.Return(); + fullscenePanel.add(fullsceneButton = GetButton("fullscenes/venice.png", !Globals.NIMBUSLAF)); fullsceneButton.setToolTipText("Venice!"); fullsceneButton.addActionListener(new ActionListener() @@ -1876,7 +1906,29 @@ @Override public void actionPerformed(ActionEvent e) { - /*Object3D readobj =*/ ReadGFD("https://www.noaofarc.ca/akeeba/categories/Applications/Venice.gfd", new iCallBack() + ReadGFD("https://www.noaofarc.ca/akeeba/categories/Applications/Venice.gfd", new iCallBack() + { + + public void Callback(Object obj) + { + LoadIt(obj); + } + + public void DragGesture() + { + } + }); + } + }); + + fullscenePanel.add(fullsceneButton = GetButton("fullscenes/viking.png", !Globals.NIMBUSLAF)); + fullsceneButton.setToolTipText("Viking Village!"); + fullsceneButton.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + ReadGFD("https://www.noaofarc.ca/akeeba/categories/Applications/VikingVillage.gfd", new iCallBack() { public void Callback(Object obj) @@ -1892,12 +1944,53 @@ }); fullscenePanel.Return(); - fullscenePanel.add(new cGridBag()); - fullscenePanel.add(new cGridBag()); + + fullscenePanel.add(fullsceneButton = GetButton("fullscenes/yvoire.png", !Globals.NIMBUSLAF)); + fullsceneButton.setToolTipText("Yvoire!"); + fullsceneButton.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + ReadGFD("https://www.noaofarc.ca/akeeba/categories/Applications/Yvoire.gfd", new iCallBack() + { + + public void Callback(Object obj) + { + LoadIt(obj); + } + + public void DragGesture() + { + } + }); + } + }); + + fullscenePanel.add(fullsceneButton = GetButton("fullscenes/skullcove.png", !Globals.NIMBUSLAF)); + fullsceneButton.setToolTipText("Skull Cove Island!"); + fullsceneButton.addActionListener(new ActionListener() + { + @Override + public void actionPerformed(ActionEvent e) + { + ReadGFD("https://www.noaofarc.ca/akeeba/categories/Applications/SkullCoveIsland.gfd", new iCallBack() + { + + public void Callback(Object obj) + { + LoadIt(obj); + } + + public void DragGesture() + { + } + }); + } + }); + fullscenePanel.Return(); - fullscenePanel.add(new cGridBag()); - fullscenePanel.add(new cGridBag()); - fullscenePanel.Return(); + fullscenePanel.add(new cGridBag()); fullscenePanel.add(new cGridBag()); fullscenePanel.Return(); @@ -4196,6 +4289,11 @@ copy.Touch(); // display list issue objEditor.refreshContents(true); // To show item colors return; + } else if (event.getSource() == sortCB) + { + copy.sort ^= true; + objEditor.refreshContents(); + return; } else if (event.getSource() == link2masterCB) { copy.link2master ^= true; @@ -4959,7 +5057,7 @@ void ImportGFD() { FileDialog browser = new FileDialog(objEditor.frame, "Import GrafreeD", FileDialog.LOAD); - browser.show(); + browser.setVisible(true); String filename = browser.getFile(); if (filename != null && filename.length() > 0) { @@ -5934,7 +6032,7 @@ { try { - url = new java.net.URL("file://" + fullname); + url = new java.net.URL("file:///" + fullname); } catch (Exception e2) { e2.printStackTrace(); diff --git a/Object3D.java b/Object3D.java index 3a1cb6e..f36024d 100644 --- a/Object3D.java +++ b/Object3D.java @@ -140,7 +140,7 @@ projectedVertices[i] = new cVector2(); // Others } projectedVertices[0].x = 100; // bump - projectedVertices[1].y = 5000; // punchthrough. only for png + projectedVertices[1].y = 1000; // punchthrough. only for png } void MinMax(cVector minima, cVector maxima) @@ -641,6 +641,9 @@ boolean random = false; boolean speedup = false; boolean rewind = false; + + // Option to sort triangles, e.g. for transparency. + boolean sort = false; float NORMALPUSH = 0; @@ -1213,24 +1216,28 @@ { // return true; - if (material == null || material.multiply) - return true; +// if (material == null || material.multiply) +// return true; +// +// if (projectedVertices != null && projectedVertices.length > 2 && projectedVertices[2].y >= 10000) +// return false; +// +// // Transparent objects are dynamic because we have to sort the triangles. +// return material.opacity > 0.99; - if (projectedVertices != null && projectedVertices.length > 2 && projectedVertices[2].y >= 10000) - return false; - - // Transparent objects are dynamic because we have to sort the triangles. - return material.opacity > 0.99; + return !sort; } boolean IsOpaque() { // return true; - if (material == null || material.multiply) - return true; +// if (material == null || material.multiply) +// return true; +// +// return material.opacity > 0.99; - return material.opacity > 0.99; + return !sort; } Object3D() @@ -6307,8 +6314,8 @@ Globals.lighttouched = true; // all panes... } - touched = GetBRep() == null; // this instanceof Composite || this instanceof FileObject; // false; - //touched = false; + //touched = GetBRep() == null; // this instanceof Composite || this instanceof FileObject; // false; + touched = false; if (this instanceof Texture || this instanceof TextureNode) { @@ -6455,6 +6462,7 @@ boolean failedPigment = false; boolean failedBump = false; + CameraPane.lastObject = this; try { display.BindPigmentTexture(tex, texres); diff --git a/cMaterial.java b/cMaterial.java index 0d302bd..73ae2fb 100644 --- a/cMaterial.java +++ b/cMaterial.java @@ -362,7 +362,7 @@ float color = 0.5f, modulation /*SATURATION*/ = 0.001f, metalness = 0.001f; float diffuse = 1f, specular = 0.25f, shininess = 0.75f, shift = 1; - float ambient = 0.001f, lightarea = 0.025f, factor = 0.001f, velvet = 0.001f; + float ambient = 0.001f, lightarea = 0.005f, factor = 0.001f, velvet = 0.001f; float sheen = 1f, subsurface = 0.001f, bump = 0.75f, aniso = 0.001f, anisoV = 0.001f; float cameralight = 0.5f, diffuseness = 0.001f, shadow = 5f, texture = 1f, opacity = 1; float fakedepth = 0.5f, shadowbias = 0.01f; // 0.001f; diff --git a/fullscenes/alsace.png b/fullscenes/alsace.png new file mode 100644 index 0000000..8b77987 --- /dev/null +++ b/fullscenes/alsace.png Binary files differ diff --git a/fullscenes/skullcove.png b/fullscenes/skullcove.png new file mode 100644 index 0000000..8bd10af --- /dev/null +++ b/fullscenes/skullcove.png Binary files differ diff --git a/fullscenes/viking.png b/fullscenes/viking.png new file mode 100644 index 0000000..d69a031 --- /dev/null +++ b/fullscenes/viking.png Binary files differ diff --git a/fullscenes/yvoire.png b/fullscenes/yvoire.png new file mode 100644 index 0000000..f1ff83c --- /dev/null +++ b/fullscenes/yvoire.png Binary files differ -- Gitblit v1.6.2