How to create a particle videoplane?

Yan Da's icon

I'm trying to create a particle videoplane so that I could interactive generate a new videoplane. Is there any working patch for reference? Thanks.

vcbcvfh67's icon

Check out my attachment.

This one was fun. Basically, I took the help file from jit.phys.multiple. I then replaced the 64 spheres with 64 video planes. I then added a video to those planes.

Just click "1" and "2" to get started. Note that the "read" message can be replaced with a message like "read example.mov" or "read example.png".

Hope this helps!

|\|ate |)anziger

particle_videplanes.maxpat
Max Patch
vcbcvfh67's icon

When it comes to interactively generating a new video plane based on a player action, I am not sure.

Normally what I'd do in that case is hide the max number of objects off screen until the user "pops" the object into their view with an action.

However, truly "creating" a 3d object like a videoplane based on an action is something I have yet to figure out. Perhaps lua would be useful for this?

Rob Ramirez's icon
Max Patch
Copy patch and select New From Clipboard in Max.

you can use jit.gl.videoplane with jit.gl.multiple and the p.shiva/vishnu particle objects.
controlling the number of instances is simply a matter of changing the dim attribute of the source matrix.

Yan Da's icon

Hi Rob, thanks a lot for the patch. I can figure out emitting basic video sprites with alpha channel. But when I set init_var value in z position. Different sprites would not sort depth based on their z value, i.e. sprites that are far back would display in front of sprites at front. If I turn depth_buffer enabled for videoplane. The alpha channel will have problems, it has a strange kind of mask frame blocking some of the sprites behind it. I set the blend as alphablend and blendmode as 6 7 by default.

Also, for camera perspective, is it possible to let the elements accept main camera perspectives while each sprite ignores the rotation. For instance, if I setup a camera to look down toward a group of videoplane sprites, since they are also flat surface, they will look tile based on perspective, can I make them still look orthographic while keep sizes changed according to z-depth?

The other thing is that how can I fadeout a sprite when its life ends. Also is there a way to emit the videoplane(with a quicktime video attached) that playback from a different time and rate.

In short, can Max create a particle system similar to the trapcode Particular particle plugin for aftereffects if you know it. A particle system that can easily set each sprite's color, opacity alone the life span and also allow each sprite get a different frame from a video or choose a different start time.

Yan Da's icon

Thanks Nadan10 for the patch.

Yan Da's icon

The most annoying thing is this alpha problem, see attached image. Part of the horse at back are masked by the frame of the front one. But the front one does has its transparency actually. Is it a common depth issue?

Yan Da's icon

image

Yan Da's icon

The problematic alpha sample is here.
novatrio3.com/T/alphaProblem.jpg

vcbcvfh67's icon

Hi again Yan Da!

Is it a common depth issue? Unfortunately yes.

If opengl opacity stuff made ANY sense in Max, it would just automatically assign layers based on distance to the camera.

But opengl opacity stuff doesn't make any sense in Max, so (as far as I know) you have to manually assign a "layer" to each 3d object if you want normal opacity stuff to work. And the "layer" has to be higher if it is closer to the camera. So the horse in the back should be @layer 2 and the horse in the front should be @layer 3. That's how it is for normal opengl objects in Max...not sure if jit.phys.multiple makes that process harder. I would set up an example patch, but I'm not sure how to assign layers to specific objects in jit.phys.multiple...

Someone should make an object that automatically assigns layers based on the distance of that object to the camera. That would be cool.

Your project looks awesome! Horsies!

Nate