Scattering at Object Level (copy stamping?)

   4554   5   2
User Avatar
Member
54 posts
Joined: Feb. 2009
Offline
Hey there,
I'm in the process of working on a digital asset to create a fleet of randomized ships, and I've come accross a bit of a problem that I'm having trouble figuring out.

The digital asset is at Object level, and what I'd like to do is create a process or python script that will take the asset, tweak several parameters randomly and place the resulting object to a point in space (or perhaps a point on a grid). Basically I'm wondering how to do copy stamping at object level if this is at all possible.

Does anyone have any suggestions or workarounds for this issue?

Many thanks,
Gary
User Avatar
Member
519 posts
Joined:
Offline
The way to go is to use point-instance and mantra delayed load. I am not experienced with this (yet) so all i can do is point you in the direction of the help files. There are several basic setups in the forums here when you search for “delayed” or “instance”.
User Avatar
Member
257 posts
Joined: Nov. 2007
Offline
The easiest workflow would definitely be the delayed load instancing.
This thread has got some of that in there:
http://forums.odforce.net/index.php?/topic/10741-white-swann%c2%b4s-growing-cotton-candy/page__view__findpost__p__70081 [forums.odforce.net]


But you may also want to look into the Mantra hscript or the Mantra program procedural.

Are each of these ships supposed to be animated? Like animated variations, or is it just a bunch of static meshes?
If they are animated I would consider looking into the Mantra program procedural that will:
*) call python to open a houdini (batch), randomize the parameters (with animated values), output the geometry to stdout. I anticipate this will be very slow though.

Maybe it is better to generate animated caches for each variation on disk and load those in. Because you can make that process parallel. Each ship would become a separate process that you can render. The easiest way would be with a wedge rop from within houdini. The more parallel way would be to use python from the shell and use houdini as a tool to generate your geometry.

The even more advanced way would be to write your own dso in the HDK, but that will take you some time if you've never touched the HDK.

Also on a side note I plan to release my own instancer very soon which will do “instancing of delayed loads” -(kind of like a copy sop on overdrive) and only writes a single path to a pointcloud in the ifd, which make the ifd very light. All the information is stored on the pointclouds.
Cg Supervisor | Effects Supervisor | Expert Technical Artist at Infinity Ward
https://www.linkedin.com/in/peter-claes-10a4854/ [www.linkedin.com]
User Avatar
Member
54 posts
Joined: Feb. 2009
Offline
Hey guys, thanks for the replies so far, I really appreciate them.

Basically I'm creating a scene similiar to the scene in Troy where 1000 ships sail towards Troy. My digital asset has multiple options for features such as sail type/number, hull length, cannons, sail texture etc with the hope that I can create a basic library of about 20 animated ships that I can then bake out to bgeo and randomly instance this over a grid. With your help so far I've managed to manually adjust the parameters of the asset, bake out the animation sequence and load it in in a seperate delayed load shader for each seperate ship design. These are then scattered over a grid and loaded at render time using delayed load. This seems to work fine for my current needs. I think I was perhaps overcomplicating issues earlier by trying to automatically randomise the ship generation.

I've attached a current version of my asset with 5 different baked ship options. This is very much still a work in progress but hopefully it shows what I'm trying to accomplish.

Also if anyone had any ideas or suggestions on how I could improve this setup, or suggestions for how to improve the ‘randomness’ of the ships, I would really appreciate it.

Cheers,
Gary

Attachments:
scatter_test.jpg (49.5 KB)

User Avatar
Member
519 posts
Joined:
Offline
I am probably going to state the obvious but since you asked for suggestions…

First, I would get rid of the boats without the sails, they look odd. Every boat is having full sails except a few (and these are all the same models).

As for the randomness…texturing is obviously one thing you could do to make more random ships. I suppose this is a flotilla, probably a few lords waging war over a damsel in distress (or just waging war for sports). So emblems on the sails per different lord, color of the boats etc.

Position of the oars.
Billowing and position of the sails.
Different flags in the masts.

When you add the sea there will probably some more randomness added to the position of the boats, pitch and direction on the wave etc.

Cheers,
Hans
User Avatar
Staff
2540 posts
Joined: July 2005
Offline
Different animated sails can also set them apart even more. You can generate a geo sequence of a few versions of them being blown around either with Cloth solver or oldschool spring SOP (softbody POP). Then use the Mantra Delay Load Procedural to load in different animated sequences of the sails on different boats.
There's at least one school like the old school!
  • Quick Links