Forum

Material Switch

26 February 2016 15:19 #7777
Hi,
I'm doing something wrong with this material switch but can't figure it out.
I've taken the 'inherit_material.blend' and recreated it to better understand the process. Unfortunately, my attached example does not change the material like the example does… I have no idea what the issue is… Any thoughts?
Danny Austin,Technical Manager
PIX Set Visions
26 February 2016 15:46 #7781
Hello, Danny!

You just forgot to enable logic editor and choose active logic tree for your scene
Blend4Web Team - developer
26 February 2016 16:01 #7782
Ahhhhhhh SUPER noob!
Here's the file now working for reference.

Is there a way to load materials from an external library from inside the presentation?
Perhaps materials could be exported to a database and then called by an event in the interface?

Thank you for your help
Danny Austin,Technical Manager
PIX Set Visions
26 February 2016 16:46 #7783
Is there a way to load materials from an external library from inside the presentation?
For now there is such way:
You can use simple scenes with one object as library. Let's name it for example "SuperMegaMaterialCarrier".
Then you should dynamically load library scene from your main scene and use inherit material method:
https://www.blend4web.com/api_doc/module-material.html#.inherit_material

Perhaps materials could be exported to a database and then called by an event in the interface?
As we can see from the previous answer you only need to store info about your library scenes (json and bin files). There are plenty of opportunities to organize storage and interaction depending on your needs.
Blend4Web Team - developer
26 February 2016 17:06 #7785
Excellent! Thanks for that great info.
If you had thousands of materials (assigned to "SuperMegaMaterialCarrier") could you call only one single material and it's resources? This would be fantastic.

OR would the entire library be required at client side for this to work?

Thanks

Danny
Danny Austin,Technical Manager
PIX Set Visions
26 February 2016 17:22 #7786

If you had thousands of materials (assigned to "SuperMegaMaterialCarrier") could you call only one single material and it's resources? This would be fantastic.

OR would the entire library be required at client side for this to work?
If you want to load exactly one material per call you should create carrier scene for every material. As far as i can see the most optimal way is to batch objects thematically (somehow predict what material user will choose next, again everything is depending on your application) . For the best performance you should experiment in balancing carrier scene loading routine in engine and receiving carrier scene info from the server.
Blend4Web Team - developer
26 February 2016 17:23 #7787
Ahhh yes. Great. That's really helpful. Thank you very much
Danny Austin,Technical Manager
PIX Set Visions
26 February 2016 18:16 #7789

Here's the file now working for reference.
Just not to confuse this thread visitors:
one of the inherit material nodes outputs is not connected and the logic stops there
Blend4Web Team - developer
26 February 2016 18:27 #7790
Well spotted
Danny Austin,Technical Manager
PIX Set Visions
 
Please register or log in to leave a reply.