Forum

Enabling reflections on a textured material?

30 April 2018 10:09
Nodes newbie here, thought I'd reach out to the community. I've got the hang of simple bitmap textures on objects, so I have two thin cubes at right angles to each other, each with their own texture. The general idea is of a shiny work surface, with a poster on the wall behind it. The poster should be visibly reflected in the work surface.

I've got reflections working for simple objects (simple Materials), but when I took the leap to using Textures, none of those tricks seem to work any more, and I'm blinded by all the options in the Nodes editor.

I have turned on Reflective for the work surface, and Reflexible for the poster, but I don't understand what to do with the Nodes of the work surface's material. As it stands, the texture shows but the result has no reflections at all. My nodes currently look like:


link (apologies for the imgur embedding fail)

So to get my texture working I have a Geometry (for the UV, it seems a "UV Map" node would also work there), to a Mapping (may not be required but it was in the tutorial I followed), to an Image Texture (seems to be how to define the texture image but I don't see why this is duplicated in the Texture panel), to a Diffuse BSDF, to a Material Output.

Should I introduce a B4W_REFLECT node to my graph? If so, where?

I ran into some very complicated posts such as https://www.blend4web.com/en/community/article/387/ and others but as a beginner I cannot see what to do with my Nodes from my current position.

I did try sticking a B4W_REFLECT node in, but it only caused chaos:


link

The surface became a kind of see-through window into a parallel dimension occupied by my texture. Not quite what I was going for :)

Side question: despite having "Diffuse BSDF" in my Nodes for the work surface object, I cannot Add a new Diffuse node, nor can I find a Glossy node as I've seen in other tutorials. It seems to be dependent on the Engine. With Cycles selected, I can see Shader nodes available, but with Blend4Web selected, they are not. I understand that some aspects of the rendering engine simply aren't applicable to all engines, so all the complicated Shader options in the Cycles rendering process aren't applicable when rendering using B4W .. but I still have this Diffuse 'shader' node in my Material node pipeline, despite having the B4W engine selected. How is this possible?
01 May 2018 04:57
Trying to follow the documentation for "Dynamic Reflections" at https://www.blend4web.com/doc/en/materials.html#id17 I find I cannot complete the steps. I went through this before posting yesterday but tried again today and hit the same problem.

1/ Step 3 says "For the needed materials of the reflective objects, set the Material > Mirror > Reflectivity value. Mirror > Reflectivity > Show Reflectivity is required for displaying reflections on objects in Blender. The engine ignores this option." However, my 'poster' object's Material panel does not have a Mirror section. Perhaps this is because I have ticked Use Nodes. If I add a plain Cube and add a simple Material to it, I see a Mirror section, but as soon as I tick Use Nodes for that Material, the Mirror section disappears. So it seems I should achieve the same effect of ticking the missing "Show Reflectivity" checkbox by doing something in the Nodes editor, but the docs do not cover this scenario.

2/ I've created an Empty object of type Single Arrow and tried to assign it to the Reflection Plane field, but because the Mirror section disappears when I click Use nodes, I cannot complete this step.

3/ A Note in this section reads "If you are using node materials, dynamic reflection will only work if a Material or Extended Material node is present in the node tree." but does not give an example of what to do with this Material or Extended Material node.

I've created a very basic scene with two textured cubes in which reflections aren't working in the attached reflect_basic.zip. The bottom one is set to Reflective, and the top one to Reflexive.

The same scene with the arrow added, but cannot be used because of the 'missing' Mirror section: reflect_with_arrow.zip.

Trying to find examples that 'do' reflectivity, I ran into https://www.blend4web.com/en/forums/topic/849/ where its reflect.blend downloadable does show a simple plane reflecting a cube (no textures involved, but it's a start), however, when I select the Plane and its Material, go to Node Editor view, make sure the Shader box is selected in its Header, and click use Nodes, then Fast Preview, the reflective behaviour stops working. This seems very frustrating for a beginner trying to get started

So far I haven't found anything that explains the jump from the Material options for reflectivity without Use Nodes, and with Use Nodes.
04 May 2018 09:40
I think I got over the most painful hurdle, helped by the first image on http://www.uqac.ca/daudet/blend4web_sdk_free/deploy/doc/en/node_materials.html which shows a node map for a texture. I had a look at the Extended Material node, for comparison, and noticed it has a Reflectivity option that the basic Material node does not. See attached working example.

It seems my original problem was having "Diffuse BSDF, to a Material Output" in my node pipeline. These were completely bogus and unnecessary.

So I got this node pipeline working for my reflective textured object:

UV Map [UV] -> [Vector] Image Texture -> Extended Material (Reflectivity=0.4) -> Output

Some things I learned on the way:

- the Blend4Web->Reflect node appears to be completely unnecessary for enabling reflections on a surface. I don't know why it would be needed.

- If you select Cycles renderer, you can add an Output->Material Output node, and hook up the Extended Material->Color output to its Surface input, which was the node setup I had before from somewhere, but this breaks the rendering completely, I just get a flat purple coloured surface.

- Generally, only ever have the Blend4Web engine selected. Other engines like Cycles will give you options that just lead to pain (e.g. the Material Output example above)

- With Use Nodes enabled for your object, the Material panel's "Show Reflectivity" option doesn't seem to have any effect. I can untick it, yet the Extended Material node in my node graph still has Reflectivity enabled (set to 0.4) and the scene still shows reflections in the object.

- However, the Object panel's Real-Time Reflections option "Reflective" does matter. Turn this off and the Reflectivity setting on your Extended Material node has no effect (no reflections appear on the surface). The Render panel's global "Reflections and Refractions" setting also matters of course.

- The Real-Time Reflections panel with Type=Plane has a "Reflection Plane" selector that seems to be optional. I still get reflections even with this left blank. In my real scene I have assigned an Empty arrow object pointing 'up' the plane's normal anyway, just in case.

Hope this helps someone! :)
 
Please register or log in to leave a reply.