We are excited to present a new release of Verge3D for Maya, an artist-friendly toolkit for creating 3D web interactives. Version 3.3 introduces support for several new material nodes, significantly speeds up the loading and the overall performance of your apps, adds a code-less way to export Verge3D scenes to glTF format, and implements dynamic canvas textures. This release also brings several new Puzzles, support for Woocommerce’s global product attributes and many more features and improvements the full list of which you can find below.
We supported several new Maya nodes for this update. The nodes colorComposite and floatComposite can be used to mix the occlusion map in materials.
Also the nodes Color Constant, Float Constant and Unit Conversion can now be used with Verge3D.
Maya glTF Exporter
We added Verge3D’s Anisotropic Filtering setting for textures.
We fixed the bug with many-to-one connections in node materials, e.g. when several Float nodes are connected to a single Color input.
We fixed the exporter crash related to missing UV data on the exported meshes (reported here), as well as some other issues with UVs.
For this release we addressed user concerns regarding the loading speed of their applications. As such, we performed a series of optimizations for shader compilation, which is often the bottleneck for loading. As a result, we managed to achieve a significant acceleration of loading (up to 3 times for some scenes).
The optimizations included:
- introduced parallel shader compilation, especially effective if the KHR_parallel_shader_compile WebGL extension is present (before shaders were compiled one by one)
- optimized the shader that represents the environment lighting
- optimized the shaders that relate to real-time shadows
- optimized the material shaders (such as Lambert)
- loading stages restructured to smooth and speed up the overall loading process
Some of these optimizations also improved Verge3D’s rendering performance, especially noticeable on low-end hardware or mobile devices.
Export from Application
You can now export objects, groups of objects or entire scenes in glTF format. Both .gltf or .glb (binary) options are available.
This puzzle is capable of saving configurated objects from your applications.
For best results, as well as for creating standard glTF files (without Soft8Soft/Verge3D extensions) that can be viewed by third-party glTF viewers (such as Microsoft Windows 10’s default glTF viewer), we recommend you to use glTF-compatible materials.
Trajectory for Camera Tweening
You can now choose the spherical trajectory with the tween camera puzzle. Spherical trajectory means that the camera will orbit around the pivot to a new position using the interpolated distance as radius.
This is especially helpful when the new point of view is located behind the model. The spherical trajectory, which is natural for Orbit cameras, thus may prevent unpleasant intersections with the model on its way.
In addition, the tween camera puzzle now accepts coordinates alongside objects. Coordinates can be provided to this puzzle as lists or vectors.
Dynamic Canvas as Texture
The HTML canvas can now be used as a material texture. A
<canvas> element can be created using the newly introduced HTML puzzle create canvas elem, and assigned as a material texture as usual, i.e. with the replace texture puzzle.
runCode() function of your_app_name.js module. To do this, retrieve the canvas texture by its ID specified in the puzzle:
var canvasTex = v3d.puzzles.canvasTextures['my_canvas'];
After that, you can access the HTML canvas element as follows:
var canvas = canvasTex.image;
You can use the standard methods available for drawing on the HTML canvas. For example, the following listing draws a blue smiling face on white background:
var ctx = canvas.getContext("2d"); ctx.fillStyle = 'white'; ctx.strokeStyle = 'blue'; ctx.fillRect(0, 0, canvas.width, canvas.height); ctx.beginPath(); ctx.arc(75, 75, 50, 0, Math.PI * 2, true); // Outer circle ctx.moveTo(110, 75); ctx.arc(75, 75, 35, 0, Math.PI, false); // Mouth (clockwise) ctx.moveTo(65, 65); ctx.arc(60, 65, 5, 0, Math.PI * 2, true); // Left eye ctx.moveTo(95, 65); ctx.arc(90, 65, 5, 0, Math.PI * 2, true); // Right eye ctx.stroke();
Finally, if you’d like the updates to become immediately visible in the 3D rendering, you should mark the canvas texture as dynamic:
canvasTex.needsUpdate = true;
The category Misc in the Puzzles editor was renamed as Advanced.
New puzzles wait promise and promise value were added to the Advanced category.
New Material puzzles were implemented: get color and get value that now exist alongside the previously available set color and set value puzzles.
The puzzle get object transform now have an option to retrieve all 3 coordinates as a list.
This option can be useful for providing its output directly to Vector puzzles.
Geometry.fromBufferGeometry() now properly works with vertex colors.
The variant of Verge3D run-time v3d.module.js is now provided with software installations (previously it was only contained in the Enterprise builds). This fixes issues with code examples most of which use this run-time.
Global product attributes are supported for Woocommerce in Verge3D WordPress plugin. Also the WordPress plugin now won’t upload Maya scene files (*.ma and *.mb), similarly to Blender and 3ds Max scene files.
The advanced code-merging update feature introduced in version 3.2 was further improved, accelerated and stabilized.
There were some other cleanups and refactoring of engine shader code.
We made various minor improvements in the documentation, including fixing broken links, missing media files, etc.
We fixed some bugs in the App Manager related to the application updating feature. Also improved the performance of updating.
We fixed memory leaks when unloading applications.
We fixed the flipping issue with the create environment puzzle reported on the forums.
This update completes the salvo of Verge3D 3.3 releases for Blender, 3ds Max and Maya. As such, we have updated the distribution of Verge3D Ultimate Web Interactive Suite to reflect all changes introduced with these releases.
Grab this Verge3D version from the downloads page and see how it works for your projects!