BoundaryRep.java | ●●●●● patch | view | raw | blame | history | |
CameraPane.java | ●●●●● patch | view | raw | blame | history | |
ObjEditor.java | ●●●●● patch | view | raw | blame | history | |
Object3D.java | ●●●●● patch | view | raw | blame | history | |
cMaterial.java | ●●●●● patch | view | raw | blame | history | |
fullscenes/alsace.png | patch | view | raw | blame | history | |
fullscenes/skullcove.png | patch | view | raw | blame | history | |
fullscenes/viking.png | patch | view | raw | blame | history | |
fullscenes/yvoire.png | patch | view | raw | blame | history |
BoundaryRep.java
.. .. @@ -7,7 +7,8 @@ 7 7 8 8 class BoundaryRep implements java.io.Serializable 9 9 { 10 - static final long serialVersionUID = -4852664309425035321L;10 + static final long serialVersionUID = // VERY old 2008 -5762968998168738314L;11 + -4852664309425035321L;11 12 12 13 transient int displaylist = 0; 13 14 CameraPane.java
.. .. @@ -3601,6 +3601,8 @@ 3601 3601 }; 3602 3602 /**/ 3603 3603 3604 + static Object3D lastObject;3605 +3604 3606 //com.sun.opengl.util.texture.Texture 3605 3607 TextureData 3606 3608 GetFileTexture(String name, boolean bump, int resolution) .. .. @@ -3637,6 +3639,8 @@ 3637 3639 // return null; 3638 3640 //if (i == 2) 3639 3641 // return null; 3642 + // TIFF issue sept 20193643 + System.err.println("lastObject = " + lastObject);3640 3644 e.printStackTrace(); 3641 3645 name = name.split("\\.tif")[0] + ".jpg"; 3642 3646 } .. .. @@ -15753,6 +15757,16 @@ 15753 15757 break; 15754 15758 case 'l': 15755 15759 lightMode ^= true; 15760 + if (lightMode)15761 + {15762 + keepshadow = Globals.RENDERSHADOW;15763 + Globals.RENDERSHADOW = false;15764 + }15765 + else15766 + {15767 + Globals.RENDERSHADOW = keepshadow;15768 + }15769 +15756 15770 Globals.lighttouched = true; 15757 15771 manipCamera = renderCamera = lightMode ? lightCamera : eyeCamera; 15758 15772 targetLookAt.set(manipCamera.lookAt); .. .. @@ -17410,7 +17424,7 @@ 17410 17424 17411 17425 float depth = depths[y * TEX_SIZE + x]; 17412 17426 17413 - if (pointselection && mouseMode == SELECT && depth != 0 && depth != 1)17427 + if (pointselection && (mouseMode & SELECT) == SELECT && depth != 0 && depth != 1)17414 17428 { 17415 17429 pointselection = false; 17416 17430 .. .. @@ -18075,6 +18089,8 @@ 18075 18089 boolean OCCLUSION_CULLING = false; //true; 18076 18090 public boolean lightMode = false; 18077 18091 18092 + private boolean keepshadow;18093 +18078 18094 public boolean capsLocked = false; // VR 18079 18095 18080 18096 static public int indexcount = 0; ObjEditor.java
.. .. @@ -799,6 +799,8 @@ 799 799 // SendInfo(" delay: " + sel.delay + newline, "regular"); 800 800 // live, hide, ... 801 801 //?? SendInfo(" Orig: " + maxima + newline, "regular"); 802 + if (sel.GetTextures().pigmentdata != null)803 + si.SendInfo(" EMBEDDED ", "regular");802 804 si.SendInfo((debug ? " Texture: " : " ") + sel.GetTextures(), "bold"); 803 805 // SendInfo((debug ? " Material: " : " ") + sel.material + newline, "regular"); 804 806 if (sel instanceof cMesh) .. .. @@ -1169,6 +1171,7 @@ 1169 1171 JCheckBox selectableCB; 1170 1172 JCheckBox hideCB; 1171 1173 JCheckBox link2masterCB; 1174 + JCheckBox sortCB;1172 1175 JCheckBox markCB; 1173 1176 JCheckBox randomCB; 1174 1177 JCheckBox speedupCB; .. .. @@ -1412,11 +1415,14 @@ 1412 1415 rewindCB = AddCheckBox(setupPanel2, "Rewind", copy.rewind); 1413 1416 rewindCB.setToolTipText("Rewind animation"); 1414 1417 1418 + sortCB = AddCheckBox(setupPanel2, "Sort", copy.sort);1419 + sortCB.setToolTipText("Display from back to front");1420 +1415 1421 randomCB = AddCheckBox(setupPanel2, "Random", copy.random); 1416 1422 randomCB.setToolTipText("Randomly Rewind (or Go back and forth)"); 1417 1423 1418 1424 link2masterCB = AddCheckBox(setupPanel2, GetSupportText(), copy.link2master); 1419 - link2masterCB.setToolTipText("Attach to support");1425 + link2masterCB.setToolTipText("Link to support");1420 1426 1421 1427 if (Globals.ADVANCED) 1422 1428 { .. .. @@ -1847,6 +1853,28 @@ 1847 1853 1848 1854 cButton fullsceneButton; 1849 1855 1856 + fullscenePanel.add(fullsceneButton = GetButton("fullscenes/alsace.png", !Globals.NIMBUSLAF));1857 + fullsceneButton.setToolTipText("Alsace!");1858 + fullsceneButton.addActionListener(new ActionListener()1859 + {1860 + @Override1861 + public void actionPerformed(ActionEvent e)1862 + {1863 + ReadGFD("https://www.noaofarc.ca/akeeba/categories/Applications/Alsace.gfd", new iCallBack()1864 + {1865 +1866 + public void Callback(Object obj)1867 + {1868 + LoadIt(obj);1869 + }1870 +1871 + public void DragGesture()1872 + {1873 + }1874 + });1875 + }1876 + });1877 +1850 1878 fullscenePanel.add(fullsceneButton = GetButton("fullscenes/london.png", !Globals.NIMBUSLAF)); 1851 1879 fullsceneButton.setToolTipText("Old London!"); 1852 1880 fullsceneButton.addActionListener(new ActionListener() .. .. @@ -1854,7 +1882,7 @@ 1854 1882 @Override 1855 1883 public void actionPerformed(ActionEvent e) 1856 1884 { 1857 - /*Object3D readobj =*/ ReadGFD("https://www.noaofarc.ca/akeeba/categories/Applications/oldlondon.gfd", new iCallBack()1885 + ReadGFD("https://www.noaofarc.ca/akeeba/categories/Applications/oldlondon.gfd", new iCallBack()1858 1886 { 1859 1887 1860 1888 public void Callback(Object obj) .. .. @@ -1869,6 +1897,8 @@ 1869 1897 } 1870 1898 }); 1871 1899 1900 + fullscenePanel.Return();1901 +1872 1902 fullscenePanel.add(fullsceneButton = GetButton("fullscenes/venice.png", !Globals.NIMBUSLAF)); 1873 1903 fullsceneButton.setToolTipText("Venice!"); 1874 1904 fullsceneButton.addActionListener(new ActionListener() .. .. @@ -1876,7 +1906,29 @@ 1876 1906 @Override 1877 1907 public void actionPerformed(ActionEvent e) 1878 1908 { 1879 - /*Object3D readobj =*/ ReadGFD("https://www.noaofarc.ca/akeeba/categories/Applications/Venice.gfd", new iCallBack()1909 + ReadGFD("https://www.noaofarc.ca/akeeba/categories/Applications/Venice.gfd", new iCallBack()1910 + {1911 +1912 + public void Callback(Object obj)1913 + {1914 + LoadIt(obj);1915 + }1916 +1917 + public void DragGesture()1918 + {1919 + }1920 + });1921 + }1922 + });1923 +1924 + fullscenePanel.add(fullsceneButton = GetButton("fullscenes/viking.png", !Globals.NIMBUSLAF));1925 + fullsceneButton.setToolTipText("Viking Village!");1926 + fullsceneButton.addActionListener(new ActionListener()1927 + {1928 + @Override1929 + public void actionPerformed(ActionEvent e)1930 + {1931 + ReadGFD("https://www.noaofarc.ca/akeeba/categories/Applications/VikingVillage.gfd", new iCallBack()1880 1932 { 1881 1933 1882 1934 public void Callback(Object obj) .. .. @@ -1892,12 +1944,53 @@ 1892 1944 }); 1893 1945 1894 1946 fullscenePanel.Return(); 1895 - fullscenePanel.add(new cGridBag());1896 - fullscenePanel.add(new cGridBag());1947 +1948 + fullscenePanel.add(fullsceneButton = GetButton("fullscenes/yvoire.png", !Globals.NIMBUSLAF));1949 + fullsceneButton.setToolTipText("Yvoire!");1950 + fullsceneButton.addActionListener(new ActionListener()1951 + {1952 + @Override1953 + public void actionPerformed(ActionEvent e)1954 + {1955 + ReadGFD("https://www.noaofarc.ca/akeeba/categories/Applications/Yvoire.gfd", new iCallBack()1956 + {1957 +1958 + public void Callback(Object obj)1959 + {1960 + LoadIt(obj);1961 + }1962 +1963 + public void DragGesture()1964 + {1965 + }1966 + });1967 + }1968 + });1969 +1970 + fullscenePanel.add(fullsceneButton = GetButton("fullscenes/skullcove.png", !Globals.NIMBUSLAF));1971 + fullsceneButton.setToolTipText("Skull Cove Island!");1972 + fullsceneButton.addActionListener(new ActionListener()1973 + {1974 + @Override1975 + public void actionPerformed(ActionEvent e)1976 + {1977 + ReadGFD("https://www.noaofarc.ca/akeeba/categories/Applications/SkullCoveIsland.gfd", new iCallBack()1978 + {1979 +1980 + public void Callback(Object obj)1981 + {1982 + LoadIt(obj);1983 + }1984 +1985 + public void DragGesture()1986 + {1987 + }1988 + });1989 + }1990 + });1991 +1897 1992 fullscenePanel.Return(); 1898 - fullscenePanel.add(new cGridBag());1899 - fullscenePanel.add(new cGridBag());1900 - fullscenePanel.Return();1993 +1901 1994 fullscenePanel.add(new cGridBag()); 1902 1995 fullscenePanel.add(new cGridBag()); 1903 1996 fullscenePanel.Return(); .. .. @@ -4196,6 +4289,11 @@ 4196 4289 copy.Touch(); // display list issue 4197 4290 objEditor.refreshContents(true); // To show item colors 4198 4291 return; 4292 + } else if (event.getSource() == sortCB)4293 + {4294 + copy.sort ^= true;4295 + objEditor.refreshContents();4296 + return;4199 4297 } else if (event.getSource() == link2masterCB) 4200 4298 { 4201 4299 copy.link2master ^= true; .. .. @@ -4959,7 +5057,7 @@ 4959 5057 void ImportGFD() 4960 5058 { 4961 5059 FileDialog browser = new FileDialog(objEditor.frame, "Import GrafreeD", FileDialog.LOAD); 4962 - browser.show();5060 + browser.setVisible(true);4963 5061 String filename = browser.getFile(); 4964 5062 if (filename != null && filename.length() > 0) 4965 5063 { .. .. @@ -5934,7 +6032,7 @@ 5934 6032 { 5935 6033 try 5936 6034 { 5937 - url = new java.net.URL("file://" + fullname);6035 + url = new java.net.URL("file:///" + fullname);5938 6036 } catch (Exception e2) 5939 6037 { 5940 6038 e2.printStackTrace(); Object3D.java
.. .. @@ -140,7 +140,7 @@ 140 140 projectedVertices[i] = new cVector2(); // Others 141 141 } 142 142 projectedVertices[0].x = 100; // bump 143 - projectedVertices[1].y = 5000; // punchthrough. only for png143 + projectedVertices[1].y = 1000; // punchthrough. only for png144 144 } 145 145 146 146 void MinMax(cVector minima, cVector maxima) .. .. @@ -641,6 +641,9 @@ 641 641 boolean random = false; 642 642 boolean speedup = false; 643 643 boolean rewind = false; 644 +645 + // Option to sort triangles, e.g. for transparency.646 + boolean sort = false;644 647 645 648 float NORMALPUSH = 0; 646 649 .. .. @@ -1213,24 +1216,28 @@ 1213 1216 { 1214 1217 // return true; 1215 1218 1216 - if (material == null || material.multiply)1217 - return true;1219 +// if (material == null || material.multiply)1220 +// return true;1221 +//1222 +// if (projectedVertices != null && projectedVertices.length > 2 && projectedVertices[2].y >= 10000)1223 +// return false;1224 +//1225 +// // Transparent objects are dynamic because we have to sort the triangles.1226 +// return material.opacity > 0.99;1218 1227 1219 - if (projectedVertices != null && projectedVertices.length > 2 && projectedVertices[2].y >= 10000)1220 - return false;1221 -1222 - // Transparent objects are dynamic because we have to sort the triangles.1223 - return material.opacity > 0.99;1228 + return !sort;1224 1229 } 1225 1230 1226 1231 boolean IsOpaque() 1227 1232 { 1228 1233 // return true; 1229 1234 1230 - if (material == null || material.multiply)1231 - return true;1235 +// if (material == null || material.multiply)1236 +// return true;1237 +//1238 +// return material.opacity > 0.99;1232 1239 1233 - return material.opacity > 0.99;1240 + return !sort;1234 1241 } 1235 1242 1236 1243 Object3D() .. .. @@ -6307,8 +6314,8 @@ 6307 6314 Globals.lighttouched = true; // all panes... 6308 6315 } 6309 6316 6310 - touched = GetBRep() == null; // this instanceof Composite || this instanceof FileObject; // false;6311 - //touched = false;6317 + //touched = GetBRep() == null; // this instanceof Composite || this instanceof FileObject; // false;6318 + touched = false;6312 6319 6313 6320 if (this instanceof Texture || this instanceof TextureNode) 6314 6321 { .. .. @@ -6455,6 +6462,7 @@ 6455 6462 boolean failedPigment = false; 6456 6463 boolean failedBump = false; 6457 6464 6465 + CameraPane.lastObject = this;6458 6466 try 6459 6467 { 6460 6468 display.BindPigmentTexture(tex, texres); cMaterial.java
.. .. @@ -362,7 +362,7 @@ 362 362 363 363 float color = 0.5f, modulation /*SATURATION*/ = 0.001f, metalness = 0.001f; 364 364 float diffuse = 1f, specular = 0.25f, shininess = 0.75f, shift = 1; 365 - float ambient = 0.001f, lightarea = 0.025f, factor = 0.001f, velvet = 0.001f;365 + float ambient = 0.001f, lightarea = 0.005f, factor = 0.001f, velvet = 0.001f;366 366 float sheen = 1f, subsurface = 0.001f, bump = 0.75f, aniso = 0.001f, anisoV = 0.001f; 367 367 float cameralight = 0.5f, diffuseness = 0.001f, shadow = 5f, texture = 1f, opacity = 1; 368 368 float fakedepth = 0.5f, shadowbias = 0.01f; // 0.001f; fullscenes/alsace.pngBinary files differ
fullscenes/skullcove.pngBinary files differ
fullscenes/viking.pngBinary files differ
fullscenes/yvoire.pngBinary files differ