Skip to content

WalkTheWeb v3.6.3

Compare
Choose a tag to compare
@adishno adishno released this 02 May 21:08
· 83 commits to WalkTheWeb since this release
fa96048

Release Date: 5/2/2023
By Aaron Dishno Ed.D.

This software is a hosting software for 3D Websites as part of 3D Internet Metaverse that combine 3D Gaming with 3D Shopping. It is a 3D CMS for 3D Games and 3D Plugins.

Demo 3D Website: https://3d.walktheweb.com/

This release includes Babylon 6.1.0 and the addition of Havok Physics Engine! It also adds SkyBoxes, many new environment settings, new debug tools, faster avatar load times, enhanced mouse over support, group layer rendering, lighting and fog settings, and improvements to avatar movement.

Here are the details for this release:

New Image Qualification in Code - When uploading an image file to the File Uploads process, we automatically scale the image into thumbnails, websize, and the original. This process does not work for 3D Images like skyboxes. Therefore, we added code to check for images and eliminate known skybox file types (by extensions) from being scaled to the various sizes.

Get My Images function Extended - We modified the getMyImages php function SQL to include a case for the new standard files category. It now returns documents and skybox files.

Media Library Files Icon - We had to add code for the skybox dds, hdr, and exr types of images to not try to show a thumbnail since they are not standard image types. The code for the media Library and Information about the file now has these exceptions and replaces the thumbnail with a simple file icon.

Babylon v6.1.0 - We upgraded the Babylon Engine for the v6.x.x folder to version v6.1.0.

Added Standard File as Media Library Type - We needed a new category for files that are not documents, images, videos, or audio files, so we added a standard Files category. This will host anything that does not fit in other categories. Files category will also show the documents category items. But it will also include things like dds and hdr SkyBoxes that are not standard images that can easily show a thumbnail.

Physics Engine Selection - In Admin Mode under Settings, starting with version v6.x.x, you now have the ability to select the physics engine of your choice. Previously, cannon engine was enabled and the cannon and oimo engines were being loaded by default (which still works if you select v5.x.x). v6.x.x now includes the Havok Physics engine.

Select Babylon Version - In the Admin Mode, Settings, you will see a new section that includes a drop-down for Babylon Version. This allows you to select which version you wish to operate on your server (as a whole server).

Multiple Babylon Versions Supported - Since some of the new versions may need to be tested before you can update your site to the new version, we have added a folder structure and selection in code that will allow multiple versions to exist under the /core/scripts/engine folder.

Merge Files for htaccess updates - In the class_wtw-initsession.php file, we added a function to mergeFiles that we are using with the htaccess file. GitHub does not show .htaccess files so we use a htaccess file without the dot to represent what should be there. During a new install, the file is fully copied to the .htaccess filename. After initial install, we know some changes and customizations may exist that we respect and preserve. So we created a mergeFile function that will take every line in our htaccess file and look to see it is in the .htaccess file. If not, it will be added automatically. For best results, we recommend that any changes you make are before the WalkTheWeb section.

New Mime Types Supported - We added 4 new mime types: wasm is used by the new havok physics engine and the other three (dds, hdr, and exr) are for sky boxes. The dds and hdr files are already in use for the PBR SkyBox and HDR SkyBox respectively. The exr is for future use. These same mime types are added to the web.config for Windows Servers.

Physics Engine Global Variable - We eliminated the WTW.enablePhysics and replaced it with WTW.physicsEngine that accepts values of havok, cannon, oimo, or blank for none.

Added Mime Types to htaccess - We added some mime types to the htaccess file to now include: dds, hdr, exr, and wasm. dds and hdr can be used for skyboxes, exr is for future use, and the wasm file was added for usage by the Havok Physics Engine.

Added Function to Get Max Upload Size - We added a function to get the maximum upload file size value in bytes. We also added a function to convert values with P, T, G, M, or K to bytes to assist the first function. These functions are also extended to handler, connect, and plugin classes. It is also now used to replace the 5 cases of 128000000 hard coded value.

Physics Viewer Added to Admin Mode - We implemented the Physics Viewer. You will find it in Admin Mode, under Development Tools. This tool will allow you to see how Babylon implements the physics around objects and help troubleshoot physics related implementations.

Babylon Debug Functionality Added - We implemented the Debug Layer Inspector. You will find it in Admin Mode, under Development Tools. This tool will allow you to see how Babylon implements meshes and functionality in the scene.

Beginning adding Physics to Molds - We are beginning to add physics to molds. This will continue to be implemented for a couple months. You can expect physics behaviors to improve as we go.

Updated BabylonJS to 6.0 - We updated BabylonJS to version 6.0! Read about all of the new features at: https://babylonjs.medium.com/announcing-babylon-js-6-0-dcb5f1662e3a

We have implemented Havok Physics Engine - We have implemented the Havok Physics Engine! This was released in the BabylonJS version 6.0.

Split Load Sequence in two Functions - We split the load sequence in the wtw_core.js file into two parts (second is continueLoadSequence) so that the physics engine can be loaded async and the remainder of the load sequence can be triggered on its completion. Some of the items cannot be loaded until the scene is created properly with the physics engine loaded.

Added Set Sky Size Function - We added a setSkySize function so that the size of the sky could be changed without reloading the complete sky. We mainly use it for the Default Sky since a full reload sets the sky scene using an animation. This method resizes without reloading.

Added Sky Dome Size Adjustment - We added an adjustment for the sky dome size when you select a Default Sky Type. The remainder of the current skies are boxes and use a different size adjustment on the form. The two size adjustments synchronize in code and feed the WTW.init.skySize global variable.

Increased the Max Camera View - We increased the camera maxZ to extend the view range from skybox size plus 1000 to skybox size plus 5000. When we only had dome skies, the 100 was enough to always be larger than the skydome. But now that we have sky boxes, the corners were getting clipped by the camera range on the larger skyboxes. This corrects that issue.

Select Avatar Save Time Reduced - When changing avatar using the select avatar 3D Form, if you are using a global login, the save button takes a long time to copy your chosen avatar to the global server. Previously, the avatar would not load to the scene until the process is finished. Now, we are loading the local version being copied immediately so you can visit the scene and the copy process continues in the background.

User 3D Menu Buttons Renamed - The names of the buttons had myavatar in them, so when we excluded myavatar so it can click through your own avatar when selecting, it was also ignoring the buttons. They are now renamed and working properly. Also, to select you own avatar, use the long click.

Enter Button Resolved - If you panned the view before clicking enter, the enter button would animate but not activate to enter the scene. This has been resolved by changing the if clause conditions in the inputClick function and removing the else part of the statement.

Mouse Over and Out Global Variables Removed - The WTW.mouseOver and WTW.mouseOut global variables are obsolete so have been removed from the code. They were used with the register mouse over and action Manager obsolete items that were also removed.

Register Mouse Over Function Removed - The registerMouseOver function is obsolete so has been removed from the code. This includes the 102 reference calls to it throughout the code.

Mouse Over Action Manager Removed - We removed the Shopping Plugin moldQueueAdd function because it did not account for the rendering group order when hovering over 3D Objects in the scene. This functionality has been replaced with the mouseOverByRenderingGroup function in wtw_input.js

Mouse Over Action Manager Removed - We removed the Mouse Over and Mouse Out Action Manager because it did not account for the rendering group order when hovering over 3D Objects in the scene. This has been replaced with the mouseOverByRenderingGroup function in wtw_input.js

Mouse Out Function Removed - The mouseOutMold function has been replaced by the mouseOutByRenderingGroup function. Therefore obsolete and removed from code.

Mouse Over Mold Function Removed - The mouseOverMold function has been replaced by the mouseOverByRenderingGroup function. Therefore obsolete and removed from code.

New Mouse Out function for Molds - Using the pattern of the new mouse over by render group, this mouseOutByRenderingGroup function is called to clear the mouse overs and serves as a mouse out function.

New Mouse Over By Render Group - We created a new function called mouseOverByRenderingGroup that replaces the WTW.mouseOver action manager controlled function. This new function respects rendering group ids and creates a new mouse over and mouse out events.

New Pick Mold Name By Rendering Group - We created a new function called pickMoldNameByRenderingGroup in the wtw_inputs.js file. This function uses a pick ray to select multiple meshes under the cursor, then parses through them to select the highest render group with the shortest distance. This allows us to select buttons on the HUD when the render is showing it first regardless of closer 3D Objects. (Previously the render was working to order the 3D Objects, but the select mesh was not.)

Added Pick Mold Name Function - Since numerous inputs use the pick mold name based on mouse or touch positions, we moved the common code to a function called pickMoldName(zevent). This will allow us to enhance the function as needed in one place.

Input Up Modified - We moved the mouseUp code for Drag ID and clauses to the inputUp function so that it will now work for touchUp also. In addition, the cancelWalkToPosition is present, it was redundant to include the same keyPressedRemove commands so they were removed. Also note that the Input Up fires before the click or long click, so they do not interfere with the click movement being initiated.

Input Moving Corrected - When you clicked on the screen sides the avatar would jump slightly towards that touch. We corrected this action by confirming that the mouse or touch has moved positions before triggering the motion. Now it performs as expected and the avatar will not turn unless you initiate a mouse or touch movement (or keyboard commands).

Added Long Click Event - When a click is held longer than 350 ms and the mouse or touch has not moved on the screen, it is now triggering a long click event (inputLongClick function added to the wtw_input.js file).

Slow Click for Avatar Animations - We the ability to slow click on your avatar to open the Avatar Animations selection menu. Optionally, slow click again to close it.

Cancel Movement with Cancel Walk To Position - When the user clicks or touches the screen, it places a mark on the ground and the avatar will walk to that position. We added code that when the user clicks the keyboard, drags the mouse, swipes the screen, or moves the scrollbar, the click to movement will stop. This update is in the cancelWalkToPosition function and called by a number of input functions.

Enter Button White Text Corrected - The Enter Button text did not have a material assigned to it. So it would appear as the default gray. Then when you hovered over it, it would change colors, and then finally change to the correct white color. Now the 3D Object s updated to correct the default text color. In addition, some of the other 3D Objects on the login menu had unused textures. Now they have been removed.

Added Sky and Scene Support to Change Value Function - The Change Number Value function (changeNumberValue) allows us to use the buttons to update number values. We added code so that it also recreates the Sky or Scene when the settings are changed.

Added Render Group 1 - We added rendering group id 1 to all of the basic molds, common meshes, 3D Models, and shopping plugin molds. Now that we are using these groups, we have to add them to all objects created or they will appear behind the visible scene (disappear to your view).

Added Save Community Scene and Sky Functions - In the /core/functions/class_wtwcommunities.php file and the /core/handlers/communities.php file, we added two new functions for saveCommunityScene and saveCommunitySky to handle the 43 new properties of the init settings. These fields correlate with the new admin sky and scene forms.

Added SkyBox to Select File Process - We added a skybox alternate switch clause to the setSelectFileID function in order to return the new images for the skybox without processing any meshes. It is all handled by the setSky functions.

Admin Sky Menu Code - The new Admin Sky Menu HTML code can be found in /core/functions/class_wtwadminmenu.php file, getAdminSkyMenu function.

Admin Scene Menu Code - The new Admin Scene Menu HTML code can be found in /core/functions/class_wtwadminmenu.php file, getAdminSceneMenu function.

Admin Mode Sky Form Functions - We added a number of Admin Mode Functions to support the new Sky Form Settings. They are found in the /core/scripts/admin/wtw_admincommunities.js file and include the following functions: openCommunitySkyForm, changeSkyType, changeSkyBox, setSkyBox, setSkyScene, cancelCommunitySky, and saveCommunitySky.

Admin Mode Scene Form Functions - We added a number of Admin Mode Functions to support the new Scene Form Settings. They are found in the /core/scripts/admin/wtw_admincommunities.js file and include the following functions: openSceneForm, setCommunityScene, saveCommunityScene, and cancelCommunityScene.

Connect Communities and Community Nodes Update - The Connect Files for Communities and Community have been updated with the new 43 variables broken down into nodes for scene, light, fog, and sky,

Community Info Update - The Community Info that is passed to the page from PHP to JS, is now updated to include the 43 new Scene variables. They can be found in the class_wtw-initsession.php file in the getSceneSetting function.

Light Intensity on 3D Objects - When using the Sky Boxes, the light intensity is now driven by an WTW.init.sunDirectionalIntensity setting that can be changed in Admin Mode. If you are not using a Sky Box, the default procedural sky will use the inclination and azimuth settings of the sky to determine the sun intensity.

Back Light Changed to Hemispherical - The Back Light that helps see in the shadows and non direct sunlight areas (and does not cast shadows), is now a Hemispheric Light that goes out in all directions from the source. This not only helps in the shadows, but will also aluminate the inside of the buildings better.

SkyBox Load Timer Used - The new Sky Boxes tend to need the camera to be loaded before the sky box because of their reflective and environmental properties. We accomplished this using an interval timer waiting until the init cycle has completed before loading the Sky Box. Note that loading the skybox does cause a lag, but it is just during the page load process.

Transparent Meshes for Fog - Previously we had the transparency for meshes set based on distance so that they disappear into the fog. Now that the fog is an Admin Mode setting, we needed to make the change based on the Fog Mode set. It will now set the sky and extra ground to use this transparency function and base it on the type of fog mode and distance from the parameters available. (note that the ground was not using this transparency function previously.

Set Fog for Under Water - Since the Fog Mode is now in Admin Menu control, we needed to allow the under water camera to change to a blue fog and exponential type while under and switch back to your normal fog settings after your avatar comes up above the water. We used the setFog function to reset it.

Dynamic Sky Scaling Disabled - We previously had the sky able to scale as your avatar went to higher ground. This helped with the horizon effects. Currently we now have a skybox that allows you to select the size and offset. So there is no longer a need to make this dynamic. The other issue is that some of the sky boxes like PBR and HDR tend to need to be reloaded to scale and will cause a lag in the animation during this change, so we are avoiding a change if possible.

Sky Offset Values - If the sky is set to the Default (Procedural Sky dome, without a sky box), then the loading will include a possible offset values for the dome. This is currently replaced by the parameter infiniteDistance set to true to follow the camera on the sky boxes. We may replace this parameter with the new offset version later.

New Functions for Creation - We added 3 new functions to help with creating the scene and working with reloading under Admin mode: setFog, setSunLight, and createSky. THey can be found in the wtw_common.js file under the /core/scripts/prime folder. These new functions use the 43 new init scene variables.

We Removed Settings Parameters from Engine - Some of the setting parameters used when initiating the Babylon Engine were causing some strange shading on the back sides of the sky boxes. By removing the doNotHandleContextLost or setting it to false, we correct this issue. We also set the WTW.doNotHandleContextLost parameter to False, but it is fully out of the loop at the moment.

New Load Parent and Camera Function - We created a new loadParentAndCamera function in the wtw_core.js file that took on the items that could not be moved with the Load Init Settings function (they were moved before initEnvironment). This new function loads after the loadLoginSettings function.

Changed Load Order for Load Init Settings - The Load Init Settings is now loaded before the initEnvironment. This made it easier to use the setings on initial load instead of loading a default and changing it mid process.

43 new Scene, Sky, Light, and Fog Properties - Overall we added 43 new Scene, Sky, Light (Sun and Back Light), and Fog Properties to the WTW.init settings. These settings are now added to the communities table and loaded with the scene settings.

Added various Sky Boxes - You now have the option to select or load various sky boxes. We now support basic SkyBox, Custom SkyBox (upload each of 6 side images), PBR SkyBox, HDR SkyBox, and Equirectangular Panoramic SkyBox. Each Have their own unique settings which some include Ambient, Specular, Diffuse, and Emissive Colors, Sky Size, Micro Surface, Blur, PBR Settings, Directional Offsets, and more.

Added Scene, Lighting, and Fog Settings - When Editing a 3D Community, under Edit Scene, you can now edit the Scene, Lighting, and Fog. The Scene now includes settings for Ambient Color, Clear Color, Enable Cloned Mesh Map, and Block Dirty Material Mechanism settings. The Lighting allows you to set the Sun intensity, Diffuse Color, Specular Color, Ground Color, Sun X,Y,Z Direction, and an additional Back Light (for shadows and back sides of 3D Models) intensity, Diffuse Color, Specular Color, and Back Light X, Y, Z Direction (usually opposite the Sun). Finally, the Fog settings allow Enable, Mode (exponential, Exponential Faster, Linear, or None), Fog Density (which works with Exponential Modes), and Fog Start and Stop Ranges which work with Linear Fog Mode.

Edit Landscape and Scene Menu Item Renamed - We renamed the Edit Landscape and Scene menu item and IDs under the Edit 3D Community to be Edit Scene and editscene.

Renamed Landscape and Scene Menu IDs - We renamed the IDs for the Landscape and Scene Menu Items to not have the word landscape in them. Now they are wtw_adminscene, wtw_adminsky, wtw_adminground, wtw_adminwater, wtw_admingravity, and wtw_adminterrain.

Removed Duplicate Gravity Menu Item - We removed the duplicate gravity menu item from the 3D Community Options and Settings menu. The Gravity can now be set on the 3D Community - Edit 3D Community - Edit Landscape and Scene - Gravity, it is grouped with all of the other Scene Settings.

setMoldColor Renamed - The setMoldColor was renamed to resetMoldColor. This function has the four colors as parameters, opposed to the setMoldColor that uses the red, green, blue three color values.

pluginsSetMoldColor Renamed - The pluginsSetMoldColor was renamed to pluginsResetMoldColor. This function has the four colors as parameters, opposed to the pluginsSetMoldColor that uses the red, green, blue three color values.

Removed Duplicate setTextColor Function - The setTextColor function was in both the wtw_adminmolds.js and wtw_utilities.js files, therefore we removed the function from the wtw_adminmolds.js file.

closeColorSelector Function Moved - The closeColorSelector function has been moved from wtw_adminmolds.js to wtw_utilities.js. It works for both the molds color selector and the general color selector.

Set Color function Renamed - We renamed setColor to setMoldColor because it is specific to Molds. This will free the name to add a new generic function for setting the color selector when it does not refer to molds.

Plugin Set Color function Renamed - We renamed pluginsSetColor to pluginsSetMoldColor because it is specific to Molds. This will free the name to add a new generic function for setting the color selector when it does not refer to molds.

Set Color Direct function Renamed - We renamed setColorDirect to setMoldColorDirect because it is specific to Molds. This will free the name to add a new generic function for setting the color selector when it does not refer to molds.

Open Color Selector function Renamed - We renamed openColorSelector to openMoldColorSelector because it is specific to Molds. This will free the name to add a new generic function for opening the color selector when it does not refer to molds.

Plugin Open Color Selector function Renamed - We renamed pluginsOpenColorSelector to pluginsOpenMoldColorSelector because it is specific to Molds. This will free the name to add a new generic function for opening the color selector when it does not refer to molds.

Added Render Groups - Render Groups select the layer order for loading, starting a zero - three by default (can add more if needed). We added designations to render groups to the sky, ground, molds, and avatars. This should correct the particle stream effects in front of the sky. (previously they were being covered by the sky layer during rendering). Basically we are setting the sky and ground to renderingGroupId = 0; HUD and 3D Forms to renderingGroupId = 3; and everything else to renderingGroupId = 1; We may add more groups or use renderingGroupId = 2 in the future if needed.

Added Turn Speed Variable to Touch Rotation - We added the WTW.turnSpeed variable to the rotation rate for the touch or mouse based rotation. This allows the user to control the rate of turn.

New Ratings Menu Icon - We also added a menu icon to the Content Ratings item in the mobile menu. This change also updates the menu items table population to include the icon path as well as the table data update to the record for the path. The icon is not shown in the traditional browse menu.

New Mobile Browse Menu - We created a new Mobile Browse Menu. This is a copy and reformatted version of the bottom browse menu. The code changed in the class_wtwmenus.php, core stylesheet, and scripts in the prime, avatar, admin, and hud folders. Every place that updated the browse menu, now updates the mobile menu also.