From 564f4d12d93813b5d680fc24d4f118c3886d96ed Mon Sep 17 00:00:00 2001 From: Normand Briere <nbriere@noware.ca> Date: Tue, 20 Aug 2019 19:56:41 -0400 Subject: [PATCH] Parallax mapping! --- ObjEditor.java | 94 +++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 86 insertions(+), 8 deletions(-) diff --git a/ObjEditor.java b/ObjEditor.java index 098f83d..3f3be5b 100644 --- a/ObjEditor.java +++ b/ObjEditor.java @@ -134,8 +134,14 @@ try { - BufferedImage image = javax.imageio.ImageIO.read(ObjEditor.class.getClassLoader().getResourceAsStream(name)); - + BufferedImage image; + + if (name.endsWith("jpg")) + // Much faster! + image = new sun.awt.image.codec.JPEGImageDecoderImpl(ObjEditor.class.getClassLoader().getResourceAsStream(name)).decodeAsBufferedImage(); + else + image = javax.imageio.ImageIO.read(ObjEditor.class.getClassLoader().getResourceAsStream(name)); + // if (image.getWidth() > 48 && image.getHeight() > 48) // { // BufferedImage resized = new BufferedImage(48, 48, image.getType()); @@ -460,8 +466,11 @@ importOBJItem.addActionListener(this); import3DSItem = menu.add(new MenuItem("3DS file...")); import3DSItem.addActionListener(this); + if (Globals.ADVANCED) + { importVRMLX3DItem = menu.add(new MenuItem("VRML/X3D file...")); importVRMLX3DItem.addActionListener(this); + } menu.add("-"); importGFDItem = menu.add(new MenuItem("Grafreed file...")); importGFDItem.addActionListener(this); @@ -1786,14 +1795,14 @@ cGridBag creditsPanel = new cGridBag().setVertical(true); creditsPanel.setName("Credits"); - cLabel ogaLabel = new cLabel(" Most Skyboxes courtesy of OpenGameArt!", !Globals.NIMBUSLAF); + cLabel ogaLabel = new cLabel(" Skyboxes courtesy of OpenGameArt!", !Globals.NIMBUSLAF); creditsPanel.add(ogaLabel); - cButton opengameartButton; - creditsPanel.add(opengameartButton = GetButton("icons/sara-logo.png", !Globals.NIMBUSLAF)); - opengameartButton.setToolTipText("https://opengameart.org"); + cButton creditButton; + creditsPanel.add(creditButton = GetButton("icons/sara-logo.png", !Globals.NIMBUSLAF)); + creditButton.setToolTipText("https://opengameart.org"); - opengameartButton.addMouseListener(new MouseAdapter() + creditButton.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { @@ -1808,7 +1817,64 @@ } }); - for (int i=10; --i>=0;) + ogaLabel = new cLabel(" Download 3D models! (.3ds and .obj only)", !Globals.NIMBUSLAF); + creditsPanel.add(ogaLabel); + + creditsPanel.add(creditButton = GetButton("icons/3delicious.png", !Globals.NIMBUSLAF)); + creditButton.setToolTipText("https://3delicious.net"); + + creditButton.addMouseListener(new MouseAdapter() + { + public void mouseClicked(MouseEvent e) + { + try + { + Desktop.getDesktop().browse(new java.net.URI("https://3delicious.net")); + } catch (Exception e1) +// } catch (java.io.IOException | java.net.URISyntaxException e1) + { + e1.printStackTrace(); + } + } + }); + + creditsPanel.add(creditButton = GetButton("icons/archive3d.png", !Globals.NIMBUSLAF)); + creditButton.setToolTipText("https://archive3d.net"); + + creditButton.addMouseListener(new MouseAdapter() + { + public void mouseClicked(MouseEvent e) + { + try + { + Desktop.getDesktop().browse(new java.net.URI("https://archive3d.net")); + } catch (Exception e1) +// } catch (java.io.IOException | java.net.URISyntaxException e1) + { + e1.printStackTrace(); + } + } + }); + + creditsPanel.add(creditButton = GetButton("icons/turbosquid.png", !Globals.NIMBUSLAF)); + creditButton.setToolTipText("https://turbosquid.com"); + + creditButton.addMouseListener(new MouseAdapter() + { + public void mouseClicked(MouseEvent e) + { + try + { + Desktop.getDesktop().browse(new java.net.URI("https://www.turbosquid.com/Search/3D-Models/free")); + } catch (Exception e1) +// } catch (java.io.IOException | java.net.URISyntaxException e1) + { + e1.printStackTrace(); + } + } + }); + + for (int i=6; --i>=0;) { creditsPanel.add(new cGridBag()); } @@ -2616,6 +2682,12 @@ backlit.add(backlitField = new cNumberSlider(this, 0.001, 50, -1)); // , aConstraints); colorSection.add(backlit); + cGridBag parallax = new cGridBag(); + parallax.add(parallaxLabel = new JLabel("Parallax")); // , aConstraints); + parallaxLabel.setHorizontalAlignment(SwingConstants.TRAILING); + parallax.add(parallaxField = new cNumberSlider(this, 0.001, 0.5, -0.25)); // , aConstraints); + colorSection.add(parallax); + //panel.add(new JSeparator()); //panel.add(globalSection); @@ -3667,6 +3739,7 @@ shadowField.setFloat(mat.shadow); textureField.setFloat(mat.texture); opacityField.setFloat(mat.opacity); + parallaxField.setFloat(mat.parallax + 0.25f); fakedepthField.setFloat(mat.fakedepth); shadowbiasField.setFloat(mat.shadowbias); bumpField.setInteger(1); // dec 2013 @@ -4891,6 +4964,7 @@ current.shadow = (float) shadowField.getFloat(); current.texture = (float) textureField.getFloat(); current.opacity = (float) opacityField.getFloat(); + current.parallax = (float) parallaxField.getFloat() - 0.25f; current.fakedepth = (float) fakedepthField.getFloat(); current.shadowbias = (float) shadowbiasField.getFloat(); @@ -4945,6 +5019,8 @@ textureField.SetToolTipValue((mat.texture)); if (!Equal(opacityField.getFloat(), mat.opacity)) opacityField.SetToolTipValue((mat.opacity)); + //if (!Equal(parallaxField.getFloat(), mat.parallax)) + parallaxField.SetToolTipValue((mat.parallax)); if (!Equal(fakedepthField.getFloat(), mat.fakedepth)) fakedepthField.SetToolTipValue((mat.fakedepth)); if (!Equal(shadowbiasField.getFloat(), mat.shadowbias)) @@ -6201,6 +6277,8 @@ cNumberSlider textureField; JLabel opacityLabel; cNumberSlider opacityField; + JLabel parallaxLabel; + cNumberSlider parallaxField; JLabel fakedepthLabel; cNumberSlider fakedepthField; JLabel shadowbiasLabel; -- Gitblit v1.6.2