Forum Replies Created
- 2020-10-16 at 10:22 pm in reply to: Why cant I get the crystal clear reflection in my object #34258
@visualizer, your work is terrific! Making convincing-looking glass is difficult. I am not an expert but here are a few thoughts.
The scooter’s windscreen is curved, and your watch crystal is flat. The curvature difference will cause the reflections of the HDRI to play differently on these two objects. Reflections are more interesting on curved surfaces. The edges of your watch crystal are sharp. Would it be inappropriate to give the edges of the crystal a small bevel and shade it smooth? If you could, the crystal would pick up many more glints of light from the HDRI.
Keep in mind that glass is never 100% clear; even a sapphire watch crystal. If you look at the scooter glass, you will see that the Glossy BSDF node has an RGB hex value of E7E7E7, a very light grey. This gives the glass a little color and presence even when it is not reflecting an HDRI light. I think that you are doing this. When I look at the watch crystal from the side, I can see the fresnel mixing in a darker color.
The other concept that stumbled across is that glass is never 100% clean. Even if I am building a configurator for a new product, I have found that mixing in the slightest grunge map into the glass shader adds realism. But, in my case, I am configuring machinery and not jewelry. The glass is not the focus of my 3D scenes. In your case, this technique may not be acceptable.
Lastly, you can try different HDRIs. The stock HDRI is very dramatic, but it does not have a lot of detail. Unless the watch crystal is pointed at one of the white lights in the HDRI, there is not much of a reflection.
@hasanyluthfi, the Verge3D solution does not have a server-side component, so user concurrency is not an issue (there is no session object on the server to track an end user’s state). A 3D scene in Verge3D is an HTML5 application that runs locally in the end user’s web browser.
The only server load that I can think of is quite small. The the assets that comprise a 3D scene must be served from a web server. The assets are static, so this is a very lightweight process. You can use your own web server, use Soft8soft’s CDN, or use your own CDN account. You can even serve the 3D scene from a S3 bucket very economicaly.
@web, yes, I can confirm the behaviour that you have described. I did try this in Firefox for Android also. On FF, the blur behaviour is the same as on Chrome, but the browser bar issue is not present. I suspect that the black bar issue is a bug in Chrome for Android.
@web, I tried your test scene on a Google Pixel 3 (running Adreno 630 GPU, with Android 10 with July patch level) and noticed something interesting. The 3D texture is blurry when you zoom out, just as you said. But if I pop it full screen, the texture is suddenly sharp (see screenshots), and this sharpness persists even when I return to non-full-screen mode. I don’t know if this helps.
Those are interesting solutions, but I think that this community focuses on dynamic 3D content. As soon as we export the 3D content from Sketchfab, Adobe, or some other exporter to USDZ, we might as well have chiseled the 3D object from stone. We lose the ability to drive the shape, texture, and animations of our 3D objects from puzzles or user selections in our web pages. USDZ might be a good solution for a post-configuration download file for iOS users, but it is not useful for interactive content.
Again, I am going to blame Apple for eschewing standards and trying to wall off their customers from the wider, more interesting world (and I am one of their customers).
Ya. Apple hates open standards and invents its own formats. I know that USDZ was Pixar, but Apple was the only PC company to use it. The format is poorly supported and documented outside of the Apple-world. Apple people like USDZ because iOS has a native viewer.
There are a few Python packages that convert gltf and other formats to USDZ. You could build a backend service on AWS or similar that takes the GLTF from Verge3D and outputs a USDZ. This conversion would be very difficult to do on the client-side.
@web, the WebGL 1.0 spec says that both the length and the width must be powers of two, so 2^x by 2^y is okay.
Non-powers of two textures (NPOTs) are supported by WebGL 2.0, but Apple does not support them.
IMHO, you should scale the images yourself before you post them. This gives you control over how the final image looks. If you don’t scale the images yourself, either the Verge3D engine or the video driver will do it and the outcome is not under your control.
@core3d, I have seen the same behavior with instances coming from 3dsMax. From Max, it seems that Verge3D exports each instance as a unique piece of geometry. This behavior makes the .bin file bigger and can bog down the client.
On the other hand, when I instance geometry in Blender, the instances all share one geometry buffer. I have attached a screenshot of 100 Suzanne instances created in Blender. They all share the same mesh in Blender. You can see that there are only three geometry buffers in Verge3D (the camera and light are the other two objects).
I don’t have an answer for you. I assumed that I was making a mistake with my model in 3dsMax. I, too, would like to know how to get Verge3D to get object instances in 3dsMax to share geometry buffers.
@web, do the anisotropic filtering settings make any difference on the mobile device? Also, what mobile device are you testing? Thanks.
@GlifTek, thank you for the great feedback.
There is a reason that I load the scene with a low-res JPG texture. If I start the scene with a 2K JPEG and then do the sniff-and-swap for WebP, the scene ends up loading two 2K texture maps on Chrome. On Chrome, the scene first loads the 2K JPEG and then loads the 2K WebP. I don’t think that there is a way to prevent the Verge3D engine from loading the initial texture. The initial texture is specified in the .gltf file. I was concerned about the load time. For a single texture on a single object, this time penalty is probably irrelevant. If we had to do this sniff-and-swap on many objects, the time penalty perhaps justifies using a low-res starting texture, but we would need to benchmark this scenario to determine the best strategy. Thanks again.
Ok, I had to try it. I made a scene with a webp texture. It works in Chrome. It does not work in Safari.
Blender does not support webp, so my object starts with a low-resolution jpeg texture (which is supported by all platforms). Puzzle logic then sniffs the browser. If the browser is Safari, it swaps in a 2K jpeg. If the browser is Chrome, the puzzles swap in a 2K webp.
I did try this setup without the browser sniffing. In that case, Safari refused to apply the webp image. So, sniffing is required.
Both the park_2k.jpg and the park_2k.webp were produced from Gimp using the 95% quality setting. The webp is about 16% smaller. I can only presume that they are of similar quality.
I like webp, but I think that platform support is an issue right now. Specifically, Apple does not support it and Blender does not support it.
If I can ignore the issue with Blender and just focus on the browser, the image codecs are not part of Verge3D. The browser vendors supply the png, jpeg, and webp codecs. Apple is planning to include the webp codec in the next major OS update (making Apple 10 years late to the webp party).
Maybe we could use the feature detection puzzle in Verge3D to detect if we are in Safari-land and serve up jpg textures when needed and webp when not? It would be an interesting experiment.
I could see webp being useful for the high-detail base-color texture maps.2020-06-22 at 11:44 am in reply to: Loding time faster on mobile then on gtx powered PC? #29105
Many of your texture images are not loading. They return 404 for me. I do not know if this issue is the cause of your problem, but it is worth examining.
Please see the screenshot.2020-05-28 at 12:04 pm in reply to: antialiasing broken when going fullscreen from iframe #28130
I updated my test project to 3.2 preview 2. It works properly now. Here is a link to the updated test project:
I tested the new version on Mac and Windows. I will keep testing other platforms to make sure that this issue is gone.
Thanks for the great work!
I like the performance logging hotkey in 3.2p2. It will be very useful.
@alfred, stp files do not support edge sharpness. OBJ and FBX files do, but I don’t think that FreeCAD supports sharp edge export.
It is often easier to clean up your geometry in CAD before you export it to Blender. Objects are usually separate parts or bodies in CAD. Those parts can be easily deleted or suppressed prior to exporting the assembly. The ability to do this will depend on how the original stp file was created. You should try this in FreeCAD.
I am not sure what tools in the free software world will do a good job of converting a STP to OBJ (or equivalent file formats). In the paid software world, Autodesk 3DS Max and Fusion 360 both do an excellent job of file conversion. I do not know your employment situation, but Autodesk does offer Fusion 360 for free for personal use and for students (please read the terms and conditions). In full disclosure, I used to work for Autodesk.
Good luck with this project!