Transparency Issue 3D Object with Iteration

Looking more closely at it, it’s not actually a bug. The way I suspect Vuos objects work, is that the first object is what would be used for “world” in other 3d software . This in essence means that it is a background (or something like it, I think the black background you see is actually transparent), which can not be transparent. So when you build a list of items on the Z-axis and multiply a negative number with the item number from the build-list node, the first object will be in front. As it is a “background object”, all objects behind it will not be visible. To make it work like you intend, just make the list range from 0 to intended position (10?), and then subtract 10 from the number. That way the first object will be at the back. See the attached composition for a working sample.

TransparencyFix.vuo (5.06 KB)

@MartinusMagneson you got a crash before and have now removed it. Can you let me know if you were able to stop the crash?

I also re-ordered the list of objects but this simply moved the problem frame around.

If this is intended behavior I hope we can get it confirmed.

Yes I removed the crash report because I looked over it again and it was just referring to the composition instead of transparency-something-to-do-with-code, so I think it’s unrelated to this issue.

I was actually wrong again, it is not a world thing at all, it’s a layer thing! All the frames are the problem frames in that an object can seemingly only be transparent if it is in front of an object with lower priority (lower input number, think layers). At least from the “Unlit 3d object from image” node. What are you trying to achieve with it? There might be ways to get around it with some careful placement and boolean logic, but I think that probably is better suited in the discussions forum (and reverse transparency in the feature requests).

In it’s basic form - when an object is iterated (drawn many times) theoretically each object should retain its correct characteristics.

Also bare in mind Vuos itterator is very much an if-loop - so that the objects are being built between frames- not some sort of dark-art that does strange things. (Yes I’m talking about QC)

@alexmitchellmus @MartinusMagneson

Like Martinus said, it has somehow to do with who’s in front or end.

Keep in mind you can also use the “Copy 3D object” and the “Make points along curve” instead of the “Build list, add values, copy Object with transform” thus allowing direct use of lists.

Look,

  • Left image is when the object interpolation starts at -5 to the front 0 ZAxis. It is transparent.

  • Right image when the object is interpolated from 0 to -5 on the ZAxis. It’s solid.

!

Movie Iteration (TransparencyFix) 1.1.zip (1020 KB)

Ok, this is related to enqueue events. If you use the attached composition with a “movie” file then you will get a translucent texture. However when you reconnect “requested frame” to “time” on the node: decode movie image, then you get the solid frame.

So please test with a playing movie.

Screenshot is paused movie (time disconnected from decode movie image). :-)

Transparency_Issue_2.vuo (6.6 KB)

@MartinusMagneson,

Thanks for the “TransparencyFix” however your comp does not use Enqueue to create a “TimeCube” effect, so does not exhibit the issue due to not using Enqueue. Unless I am using Enqueue incorrectly- I call this a bug.

@Bodysoulspirit the main reason why I am not using a COPY node is due to the fact I am loading into the quad a different texture all the time. I don’t know how to load a different texture into a COPY node for every copy- or even if it is possible. I am assuming that a copy is just that, a copy. This is why I am building each quad in an iterator. So I can get unique textures from the que all the time.

@alexmitchellmus ah ok.

@Bodysoulspirit can you test the comp and tell me it there is a difference between rendering video and still image?

There is something going on, but It seems to be related to the alpha channel. You are probably using enqueue correctly, but none of the image 3d objects can be the first in the objects input in the renderer (not including cameras) to have opacity working as intended. Try inserting a cube as the first object, and then setting the translation scale of it to 0,0,0.

Other blending options for the 3d objects are apparently not affected by this.

@alexmitchellmus yes your composition also does show the first frame solid.

Not sure if that matches your need but you could use “Process List” instead of “Build List” and push these through “Align 3D Objects in Grid”.
And I tried with “Play Movie Image” instead of “Decode Image” so that it would loop and use “Play” instead of the “requested frame”.

Not sure that matches your need but I think it does push a different Time Stamp Frame Image to each object and the front one is transparent too.

Hope it help.

PS : I’ve joined the “Chess.mov” that comes with Vuo.

!

Movie Iteration (TransparencyFix) 1.2.zip (1.85 MB)

And you can use “reverse list” to get the first or the last frame at front …

Be great to hear from team Vuo if this is indeed a bug or simply the way Vuo works. If it is the way it works then is there a part of the manual that states don’t use transparency in 1st layer objects? (ie: use a sacrificial object at scale 0,0,0)

@Bodysoulspirit will have a look at your comp when I get the chance! Pretty hectic here right now, I am assuming the holiday season is like that for everyone.

@alexmitchellmus Ok I understand what you mean better now.

I think the way I used “Align 3D objects in grid” up above works but when you want to manually do so I’m encountering the same thing as you.

Related to both/or “Build List” and “Enqueue”.

Don’t know if we are doing something wrong or if it is something like Martinus mentioned.

Let’s await some answer.

I’m uploading the composition here too.  

Iterate 3D Transparent.vuo (7.31 KB)

I created a feature request to make transparency behave more intuitively: Automatically sort sceneobject rendering, to better support transparent objects. That feature request would fix the transparency issue in @alexmitchellmus’s original composition, so I’m marking this bug report as merged with that feature request.

[magneson] the first object is what would be used for “world” in other 3d software
[alexmitchellmus] don’t use transparency in 1st layer objects? (ie: use a sacrificial object at scale 0,0,0)

No, there’s nothing special about the first object.

I think the problem with @alexmitchellmus’s original composition is that Build List is receiving extra events. It’s important that Build List and Process List only receive events fired from the Build Item/Process Item port, whereas that composition also has events coming in via Fire on Start and the window’s Requested Frame port. The extra events cause Build List to get out of sync, and the objects get added to the list in an unexpected order — the object that actually gets rendered first is the one in front (closer to the camera), and now that the depth buffer has been filled with those near pixels, some pixels in the objects behind it aren’t rendered.

But I think you can make a videocube in a simpler way (no need for Build List or Process List), by building an object with each frame, enqueuing the object, and using Arrange 3D Objects in Grid to position them. Composition attached.

videocube-smokris.vuo (3.73 KB)

Thanks @smokris !!

Fantastic explanation Steve, I have learned so much just from this issue!

@smokris

Well done that VideoCube composition. A bit like the way I did it up above, using Align 3D object in grid but without the use of “Process List”. Much easier the way you did it !

You say in @alexmitchellmus’s original composition “Build List” is receiving some extra events.
I tried to simplify something similar without “Build list” to focus on the problem but still the 1th object in the list stays opaque. So I more think its related to the way Vuo handles those 1th 3D objects (like you described).

If you could just look at this composition I’m attaching and confirm me that will be solved with that feature request you created.

Thanks ;)

Iterate 3D Transparent - 2.vuo (6.22 KB)

If you could just look at this composition I’m attaching and confirm me that will be solved with that feature request you created.

Yes, after we implement the “Automatically sort sceneobject rendering” feature request, that composition will always show both squiggles (instead of hiding one of them behind the other half the time).

In the meantime, for solid-color shading, you can use Shade Edges with Color to always see both squiggles (like in the attached composition) — that shader doesn’t write to the depth buffer, and thus it doesn’t matter which order the squiggles are rendered.

Iterate 3D Transparent - 2 - Edge.vuo (6.34 KB)