Forum Replies Created
-
AuthorPosts
-
Yuri KovelenovStaff
Hi @kumara-guru,
Unfortunately Web AR requires integration with Google’s proprietary “Play Services for AR” which Microsoft Edge currently lacks.
Yuri KovelenovStaffAppUtils.unregisterServiceKeys(app); not working on OSX 14.4.1
Sorry I messed up. It should be
v3d.AppUtils.unregisterServiceKeys(app);
Corrected my post accordingly.
Yuri KovelenovStaff@visualizer nice suggestion! will think think about it!
@masj you’re welcome!Yuri KovelenovStaffHi Claudio,
What is the “trigger / click” puzzle regardless of the old “event / mouseclick” ?
trigger click “programmatically” simulates clicking on some element, possibly in a parent html page. mouseclick on the other hand, awaits for user clicks and then performs some actions
Does that mean that we no longer need to convert all shaders to USDZ for iOS AR ?
Yes, the USDZ exporter puzzle will now do conversion automatically, even if you did not make your materials glTF/USDZ-compatible. Still beware to not over-complicate your materials. Physical material with various bitmaps connected to it should work out of the box.
Yuri KovelenovStaffYuri KovelenovStaffYuri KovelenovStaffService Tools
A new utility called Service Tools can now be invoked in any application by pressing the tilde ~ key 3 times. This reveals a menu to run the FPS counter or performance profile, to halt/resume rendering, and, which is new, to run the scene in debug mode: show geometry wireframes, lights, skeletons, or normals.
You can use these new tools to unravel, tweak and optimize your apps more easily.
Puzzles
The puzzle create object extended with a few new primitives, namely capsule, icosahedron and ring. We changed the default params for some primitives for more even distribution of polygons, a task for which the wireframe view provided a great feedback. Also the teapot primitive was scaled down by half to match the size of other meshes. By the way, the material for all created primitives is now node-based and fully integrated in the rendering pipeline.
More on create object: when adding a new camera, you can now set the control type right away, that is make it Orbit, Flying, First Person, or without any controls. We also fixed a window resizing issue for the created camera.
We added a new puzzle to the HTML category named trigger event. It allows you to call corresponding methods for clicks, taking focus, or leaving focus (aka blur). For example, if your app is working inside an iframe, you can simulate a click on some button outside the iframe (such as clicking the order button in a shop).
On the other hand, with focus, you can make the 3D canvas active and ready for user input. We added this puzzle to the iframe-based demos (Scooter, Teapot Heater, Recliner etc) to make it possible to easily enter the debug mode with the Service Tools.
The puzzle drag scale obtained a handy option for proportional scaling denoted as XYZ in its drop-down.
The puzzles simple refraction and screen-space refraction can now work in the same scene. The resulting effect will be shown in a new coming demo.
Features specific to Blender
Cascade shadows settings are now supported in the Eevee Next renderer that will appear in the upcoming Blender 4.2.
We fixed export crash when the target for the Follow Path constraint is not specified.
We fixed the add-on crash when running on top of Python 3.12. This issue manifests itself on recent Linux distros such as Fedora 39/40 or Ubuntu 24.04 if you install Blender via the package manager. This also fixes a potentially existing similar issue in the Maya plug-in.
We fixed the Specular BSDF node that rendered in black in the latest Blender version.
We fixed the Principled BSDF node crashing in the engine when exported from Blender 4.2.
Features specific to 3ds Max or Maya
Cascaded shadows are now available not only to 3ds Max but also to Maya users.
Maya shaders are now compiled for the engine faster.
The puzzles get/set material color now correctly work for Standard Surface materials in Maya.
We fixed the export crash in the latest 3ds Max 2025 caused by JPEG textures inserted in a glTF-compatible material.
The diffuse shading of clipping planes is made consistent with color settings in Maya.
Please note that with this version, we drop support for 3ds Max 2021 since this older software can no longer be downloaded from Autodesk.
glTF and USDZ exporters
Both glTF and USDZ exporter puzzles have been upgraded to support native node-based materials. This means that you no longer need to enable the glTF 2.0 Compatible checkbox for your materials in the modeling tool for these export puzzles to work properly, which was a very non-obvious thing. In addition, you can now use texture wrapping modes, compressed textures, and vertex colors when exporting to both glTF and USDZ.
This was achieved by enabling both glTF and USDZ exporters heuristically analyze the node material and accurately retrieve colors, AO, roughness, metalness, and other parameters (over-complicated materials will be simplified though). Overall, we obtained a better compliance to the glTF and USDZ formats, with the latter especially important since USDZ is currently the only way to have AR on iOS.
In Blender, you can now use not only Principled BSDF but also Diffuse, Glossy, Specular, and Emission shaders with these exporters. In 3ds Max, you can now use not only Physical material, but also Arnold’s Lambert, Standard Surface, and Map to Material materials with these exporters. In Maya, you can now use not only Standard Surface, but also Lambert, Arnold’s Lambert, and Surface Shader nodes with these exporters.
On a final note, NOT using the glTF 2.0 Compatible checkbox starting from this version would give you a more consistent result with Verge3D’s native material pipeline. This way you can leverage important material settings such as render side, depth write, depth test, dithering, shadow settings, blend modes, etc, which are not available for glTF 2.0-compatible materials. As such, we recommend avoiding glTF 2.0 Compatible since you can now achieve everything without it, and we’ll likely deprecate this setting in the future.
New Puzzles API for Plugin developers
With this release, we introduce a new application programming interface to help extend Verge3D which we called PzLib. It is a set of helper classes, functions and variables used in the code generated by the Puzzles Editor, and you can now use them in custom puzzles loaded as plugins!
For example, here’s how you can obtain the actual 3D object from its name provided by a puzzle:
// importing method from PzLib Plug.pzlib('getObjectByName'); // using it let myObj = PzLib.getObjectByName(objName);
Using this new API will make it easier to develop plugins and help avoid reinventing the wheel. Moreover, it makes the code more compact by reusing the core functionality from the built-in puzzles.
If you are a plugin developer, check out the reference for the Puzzles API that contains detailed information on its usage.
New API methods for JS coders
New method App.disableControls() basically makes the camera static. Call App.enableControls() to return the controls back.
New methods v3d.MaterialUtils.createDiffuseMaterial() and v3d.MaterialUtils.createStandardPBRMaterial() create node-based diffuse and PBR materials respectively. The former is just the same as MeshLambertMaterial and the latter is a full analog of MeshStandardMaterial, only differentiating from those by both being node-based. What for? Method createDiffuseMaterial is now used for creating the diffuse material of clipping plane intersections, while the other method is used by the puzzles create object, create text object and make from, instead of the original Three.js API. As a result, these procedurally created materials are now consistent with the modeling software and follow Verge3D’s native material pipeline.
You can now disable the system hot keys for the FPS counter (F-F-F), performance profile (P-P-P), pause (H-H-H), and the newly introduced Service Tools (~ ~ ~) by either of the two following ways:
// do it right after creating an app app.registerServiceKeys = false;
or
// this one can be called from Puzzles (not from Init tab) v3d.AppUtils.unregisterServiceKeys(app);
API deprecation
We initiated a thorough review of features inherited from Three.js long ago, dropping those apparently not useful for the Verge3D pipeline. We are going to do it in an incremental manner, by removing some features right away and marking others as deprecated. In any case, these changes may only affect the JavaScript coders who are using the programming API. The standard Verge3D pipeline with all its materials, puzzles, exported assets, etc won’t be affected anyhow.
With this decision we hope to redirect time and resources from features that we cannot properly maintain anyway and focus our efforts on what is really important for most of our users. See below the APIs that are removed for this version:
- WebGLMultisampleRenderTarget (it was replaced by WebGLRenderTarget.samples)
- WebGL1Renderer (not really usable, moreover WebGL 1.0 is in fact supported as fallback to WebGL 2.0)
- FontLoader (replaced by TTFLoader long time ago)
- BoxBufferGeometry and co. (replaced by BoxGeometry and co.)
- BlenderTextGeometry/BlenderTextBufferGeometry (replaced by generic TextGeometry)
- AnimationLoader, BufferGeometryLoader, MaterialLoader, ObjectLoader, .toJSON(), .fromJSON() (these de/serialization APIs never actually worked in Verge3D–you should always use glTF for loading to and exporting from the engine)
- MeshPhongMaterial, MeshToonMaterial, MeshMatcapMaterial (old unused non-PBR materials perfectly replaceable by Verge3D’s native materials)
- WebGLRenderer.physicallyCorrectLights (it is not needed because Verge3D has always been using physically correct lighting)
- sheen and iridescence props of MeshPhysicalMaterial (again, perfectly replaceable by Verge3D’s native materials)
- wireframeLinecap and wireframeLinejoin material props (were only used by SVGRenderer never supported by Verge3D)
- GLTFLoader and GLTFExporter extensions (unused or replaceable by Verge3D exporters for Blender, 3ds Max and Maya. Here is the list of dropped extensions:
EXT_meshopt_compression, EXT_mesh_gpu_instancing, KHR_draco_mesh_compression, KHR_lights_punctual, KHR_materials_clearcoat, KHR_materials_emissive_strength, KHR_materials_ior, KHR_materials_sheen, KHR_materials_specular, KHR_materials_transmission,
KHR_materials_iridescence, KHR_materials_volume, KHR_mesh_quantization and KHR_texture_transform)
We also no longer mention the following classes in the Developer Reference: MeshPhysicalMaterial, StereoCamera, InterleavedBuffer, InterleavedBufferAttribute, InstancedInterleavedBuffer, DodecahedronGeometry, LatheGeometry, OctahedronGeometry, TetrahedronGeometry, TorusKnotGeometry, HemisphereLight, HemisphereLightHelper, HemisphereLightProbe, and AmbientLightProbe. If there will be no special request regarding these features from Verge3D users, they might be removed in the future.
Various other features
We increased the default strafing speed for the Flying camera.
The FPS counter is now better positioned in the preview viewport of the Puzzles editor.
The JavaScript file generated by the Puzzles editor was stripped of most comments which made it smaller.
We supplemented docs on ChromeOS installation to cover possible issues with setting up the App Manager.
The Verge3D tool chain can now work on ARM64 processors under Linux, for example on Raspberry Pi or some low-spec Chromebooks.
We reworked our internal processes for making Verge3D releases, including preview builds. Particularly, before every update we run the engine through 1000+ test applications and scenes to ensure software quality.
Fixed issues
We fixed the bug with the puzzle set style for CSS rule which reset to default values after saving the Puzzles. Thanks for bringing this up on the forums.
We fixed the bug with non-unity screen scale in AR or VR mode, which could mess with camera-parented objects. This issue was reported via the Enterprise support channel.
We fixed the crash of the App Manager if the name of the application folder ends with .html. Thanks for reporting this on the forums.
We fixed the issue with App Manager settings when non-UTF-8 characters are present somewhere, for example, if the application’s title or description contains Chinese characters. Thanks for reporting this issue on the forums.
We fixed keyboard not working in the 3D viewport of the Puzzles editor. Examples are WASD keys used to navigate with the First Person camera, or custom event listeners created using HTML puzzles.
The feature available puzzle now correctly detects that the Microsoft Surface tablet is indeed equipped with a touch screen. This issue was reported via the Enterprise support channel.
We fixed a bug with emission incorrectly exported to USDZ.
We cured the engine from crashing when loading text objects which could happen in some unlucky circumstances. This issue was reported via the Enterprise support channel.
The API method App.setCamera() now properly works when switching to a static camera.
We adjusted shadow settings in the Global Illumination demo to fix rendering issues after implementing cascaded shadows.
- This reply was modified 6 months, 3 weeks ago by Yuri Kovelenov.
- This reply was modified 6 months, 3 weeks ago by Yuri Kovelenov.
Yuri KovelenovStaffHi visualizer,
You can use port forwarding to quickly test out an app in the VR headset.
Yuri KovelenovStaffHi Michael,
Unfortunately this is a known issue with iPad, Safari and full screen mode. It does not behave like that on IPhones where full screen API is not available, or in other browsers like Chrome. Perhaps we should disable full screen API altogether on Apple devices.
Yuri KovelenovStaffExcellent work!
- This reply was modified 7 months, 1 week ago by Yuri Kovelenov.
- This reply was modified 7 months, 1 week ago by Yuri Kovelenov.
2024-04-22 at 6:09 am in reply to: Inquiry About Development of a Three.js/React Three Fiber Loader #72419Yuri KovelenovStaffHi Victor,
I checked out that framework – very interesting! It turns out it represents low-level Three.js constructs (meshes, materials etc) with React components. This approach however significantly contradicts with Verge pipeline where interactivity is implemented through Puzzles. Please also note that in the near future we are planning to further diverge from Three.js in terms of API, material system and supported functionality.
- This reply was modified 7 months, 1 week ago by Yuri Kovelenov.
Yuri KovelenovStaffHi Tom,
This is more about the offline mode than about PWA. PHP scripts are usually located on the remote server and the client (browser window) requests the server to execute PHP. Therefore if there is no Internet connection – no requests pass through, and PHP is not invoked.
Yuri KovelenovStaffYuri KovelenovStaffYuri KovelenovStaff -
AuthorPosts