Print at Jan 24, 2022, 1:37:55 PM

Posted by Puybaret at Oct 19, 2016, 6:47:49 PM
Re: Sweet Home 3D 5.3
Here's the version 5.3 Beta 7 available for various systems.

This version changes how indicators around objects are detected to ensure that it's easier to move them in the plan at small scales (particularly, it should be easier to move the visitor in the plan).
But the most important changes are elsewhere and I hope you can find some time to test them:
- First, this version introduces a change in .sh3d file format. From this version, the zipped .sh3d file contains an additional entry named Home.xml which contains the same data as the existing Home entry, but at XML format respecting the DTD available in SweetHome3D.dtd. From now, when Sweet Home 3D opens a .sh3d file, it will first try to read the home it contains from its Home.xml entry, then if this entry doesn't exist, it will read the Home entry to enable the compatibility with all .sh3d files saved with older versions of Sweet Home 3D.
As the program part that decodes a Home.xml entry is very different from the Java unserialization used to decode a Home entry, please test this beta version on copies of your .sh3d files to avoid losing data in case I forgot something (I checked and rechecked this feature but there could be some special configurations that might cause some problems). To test correctly this new feature, be sure to save files and reopen them at least once. My bigger concern is about furniture groups handling that it would be nice to test too.
Introducing this new Home.xml entry in .sh3d files will help programmers who want to reuse homes designed with Sweet Home 3D in other applications programmed in languages different from Java, and is the logical continuation of the similar entry programmed for Export to HTML5 plug-in.
From the tests I ran, writing the additional Home.xml entry takes very little time and occupies little space in a .sh3d file. Sweet Home 3D will continue to save Home and Home.xml entries in .sh3d files for a while to ensure a smooth transition to the future .sh3d format that will probably not contain any Home entry at the end (only Java programs are able to write a Home entries). In all cases, the Java version of Sweet Home 3D will always be able to read existing .sh3d files, so don't worry for the files you designed in the past.

- For programmers, this version introduces the HomeObject super class for the classes of objects handled in a Home instance, i.e. walls, furniture, rooms, cameras... HomeObject class lets programmers store string properties, like IDs or any other additional data that might be needed in a plug-in or a program derived from Sweet Home 3D. Of course, these properties will be saved in .sh3d files.

- For Windows users, I replaced Java3D 1.5.2 by Java3D 1.6 which might fix issues that some users continue to report (most of the time under Windows 7). I could have done this change some time ago, but in one of my not so common Windows configurations running under Parallels Desktop, Java3D 1.6 provoked a crash at program start, something which prevents me to be confident. But I finally found how to fix this issue in Java3D 1.6 and I'm not reluctant anymore to deliver it in Sweet Home 3D. So please, test this version on any Windows box that you may have at your disposal to check it correctly works.

- For Linux users, I have some very good news: I fixed two bad bugs that will give a new life to Sweet Home 3D under that system. First, I replaced Java3D 1.5.2 by Java3D 1.6 to fix the crash of Sweet Home 3D under Ubuntu 16. But that's not all! I also found how to circumvent the bug that prevented to use textures on room floors under Java 7 and 8. So, Linux users can again run Sweet Home 3D with the Java version of their choice. As Java 8 fixed also the font color in the menu bar which was too dark under recent Ubuntu releases, I replaced the JRE 6 by the latest JRE 8 in Linux installers.
Note that in my tests configuration running under Parallels Desktop, the navigation in the 3D view is slower with Java3D 1.6 than with Java3D 1.5.2, but maybe it's due to the video drivers provided by Parallels Desktop. Please, share your experience on this point too.

- For people with old or special configurations, the Jar executable version provides Java 3D 1.5.2 and 1.6 libraries and under Windows and Linux, you can force the version 1.5.2 of this library with the new System property com.eteks.sweethome3d.j3d.version. For example, if you want to run Sweet Home 3D with Java 3D 1.5.2 under Linux without checking offScreen support, you can run the following command:
java -Dcom.eteks.sweethome3d.j3d.version=1.5.2 -Dcom.eteks.sweethome3d.j3d.checkOffScreenSupport=false -Xmx640m -jar /path/to/SweetHome3D-5.3.beta7.jar
and the following command will run Sweet Home 3D with DirectX support under Windows:
"C:\Program Files (x86)\Java\jre1.8.0_51\bin\java.exe" -Dj3d.rend=d3d -Dsun.java2d.d3d=true -Dsun.java2d.noddraw=false -Dsun.java2d.ddoffscreen=true -Dsun.java2d.ddscale=true -Xmx640m -jar /path/to/SweetHome3D-5.3.beta7.jar
In the previous command, I wrote the full path of java.exe to show that DirectX support is available only with Java 32 bit. Note also that when System property j3d.rend is set to d3d, -Dcom.eteks.sweethome3d.j3d.version=1.5.2 is optional since DirectX support isn't available in Java3D 1.6 anymore.

I'm looking forward to reading your feedback, and don't worry, new features should come soon wink
Emmanuel Puybaret, Sweet Home 3D developer