Jump to content
Guest xionmark

mantra "clusterThis" procedural geometry DSO

Recommended Posts

okay so i did mantra -V4 and it finds clusterThis... any other suggestions?

i uploaded a pic of a load error when i first open up the hip... i don't think it's the reason why i'm not getting a render

thank you for the help!

J

errors.tiff

Edited by itriix

Share this post


Link to post
Share on other sites
Guest xionmark
i uploaded a pic of a load error when i first open up the hip... i don't think it's the reason why i'm not getting a render

That error is not coming from the example hip file; what version of Houdini are you using and what operating system?

I have a hunch you're using Houdini 10, which these plugins are not complied for (yet).

Mark

Share this post


Link to post
Share on other sites
That error is not coming from the example hip file; what version of Houdini are you using and what operating system?

I have a hunch you're using Houdini 10, which these plugins are not complied for (yet).

Mark

thanks for the help, your hunch was right... so i'll be waiting ;)

Share this post


Link to post
Share on other sites
Guest xionmark

Wow, has it been a year already since I first released this?

:ph34r: Uhny Iftz ...

So here's the next release of the clusterThis mantra geometry procedural ... ta da!

http://digitalcinemaarts.com/dev/clusterThis/

These are example images from the included example hip file:

http://digitalcinemaarts.com/dev/clusterThis/images_examples.html

They are only compiled for version 9.5.379 at the moment, and no Windows ... I can't get that damn vc8 to work, I hate Windows ... someone can build that for me until I get the time to sort out the MS crap.

I should have H10 versions by tonight or tomorrow, unless you want to compile yourself, it's as easy as:

hcustom -i . VRAY_clusterThis.C

Then copy the resulting VRAY_clusterThis.[so/dll/dylib] to the appropriate location.

The new features in this version are:

1) Curve instancing fixed (that was an easy one ...)

2) Added an instance id (inst_id) attribute for every point or primitive instanced so you can use it in your shaders to differentiate each instance from one another.

3) Fixed a bunch of stuff ... yes, there's a bit more to do but should be coming along soon.

There's a billion places one can take a project like this, I found myself getting a little carried away with volumes and modulating data with 3D/volumetric data simulated/generated via DOPs (or other signal and function generators). Well it got a bit out of hand so I had to reign it in a bit. So in the free/open source version you may notice certain hooks and parameters that are disabled (but perhaps look intriguing ...), those are features in the "professional" version; contact us (DCA) for me info.

Should anyone need a mantra/VRAY procedural built, we're open for business! :)

As usual, please report bugs, requests, etc., and as always, no warranties expressed or implied (blah, blah, blah). Most important, have fun and share the vibe!

Out for now,

Mark

:unsure:

Share this post


Link to post
Share on other sites

So here's the next release of the clusterThis mantra geometry procedural ... ta da!

http://digitalcinemaarts.com/dev/clusterThis/

These are example images from the included example hip file:

http://digitalcinemaarts.com/dev/clusterThis/images_examples.html

Awesome Mark, can't wait to give this a run, and I got your back on the Win64 compiles when I get home :-)

Share this post


Link to post
Share on other sites
Guest xionmark

Awesome Mark, can't wait to give this a run, and I got your back on the Win64 compiles when I get home :-)

Wow cool man!

Thanks!

Share this post


Link to post
Share on other sites
Guest xionmark

Oh, forgot to mention that I'm writing much more documentation and explanations of the examples, tips for efficient use, design docs, etc., which helps one to understand the tools better and after all this is meant to be an HDK teaching tool as much as a production tool ... :rolleyes:

Share this post


Link to post
Share on other sites

Hey Mark!

Thanks for your continued development. The instance id is going to open up alot of possibilities.

And yeah the docs you mentioned would be gggrrreat. I've already learned much from perusing your code :)

Share this post


Link to post
Share on other sites

Oh, forgot to mention that I'm writing much more documentation and explanations of the examples, tips for efficient use, design docs, etc., which helps one to understand the tools better and after all this is meant to be an HDK teaching tool as much as a production tool ... :rolleyes:

Appreciate that one :)

Share this post


Link to post
Share on other sites

Hi,

first of all I would like to say thanks to Mark for developing this dso. I'm starting to write my own and being a noob to the hdk this is really valuable!

I am currently trying to get your dso to run on houdini 10.0.430 on linux 64 bit (fedora) and seem to have hit a problem as the dso exits when I try to render.

I've compiled it (seemingly) without problems, first by modifying your make file, then as you suggested by using hcustom -i . VRAY_clusterThis.C .

I have modified the VRAYprocedural file in /home/pclaes/houdini10.0 to include the clusterthis from your VRAYprocedural.

The VRAY_clusterThis.so lives in /home/pclaes/houdini10.0/dso/linux64/mantra and is registered by mantra when I check using mantra -V4 (I've also tested all the sidefx examples and they are working).

Registering procedural 'clusterThis'

Registering procedural 'demobox'

Registering procedural 'demofile'

Registering procedural 'demostamp'

Registering procedural 'demovolume'

Registering procedural 'demomountain'

Registering procedural 'sprite'

Registering procedural 'image3d'

Registering procedural 'metapoly'

Registering procedural 'file'

Registering procedural 'fur'

Registering procedural 'program'

Registering procedural 'hscriptinstance'

Registering procedural 'image3dvolume'

mantra Version 10.0.430 (Compiled on 10/15/09)

I have installed the otl and assigned it to my geometry. All settings on the otl are on default.

When trying to render with a single point as base geometry I get the following output:

Unknown operator type: Shop/pcplastic

Unknown operator type: Shop/sfsss

Unknown operator type: Shop/fastgi

VRAY_clusterThis::VRAY_clusterThis() - Version: 1.4.7

VRAY_clusterThis::VRAY_clusterThis() - Built for Houdini Version: 9.5.379

VRAY_clusterThis::render() Instancing ...

VRAY_clusterThis::render() Number of points of incoming geometry: 1

VRAY_clusterThis::render() - Using "instance all the geometry at once" method

VRAY_clusterThis::render() - Memory usage(MB): 0.00198364

VRAY_clusterThis::render() Total number of instances: 20

VRAY_clusterThis::exitClusterThis() - Preparing to exit!

VRAY_clusterThis::exitClusterThisReal() - Exiting

- and the resulting image is black, there is a spotlight in the scene and a single point with N (vector), v (vector), Cd (float3), Alpha (float),id (int) and pscale (float) point attributes.

I must be missing something, but I don't really know what (except for the obvious: VRAY_clusterThis::VRAY_clusterThis() - Built for Houdini Version: 9.5.379 ). - I've attached the scene file.

Any suggestions?

VRAY_clusterThis_v1.4.7_test_01.hip

Share this post


Link to post
Share on other sites
Guest xionmark

Hi,

You had it setup for point rendering but didn't have point rendering enabled on the object. I changed it to instance spheres, and played with a few things, like radius, size, etc. The hip file is attached.

Take some time play with it, there's a lot of things that interact with each other.

A new version is almost ready, just bogged down in production gig at the moment.

Mark

Share this post


Link to post
Share on other sites

ah, that little checkbox on the geo node! Thanks, I'm exploring it further.

Share this post


Link to post
Share on other sites

Hi Mark,

I am now doing a project where I will be rendering huge amounts of particles and after reading this thread i thought of trying out this cool tool to achieve it.

I downloaded the mantra_clusterThis_v1.4.7 from this link - http://www.digitalcinemaarts.com/dev/clusterThis/index.html

But i couldnt manage to find the .dso file in the folder. The folder dso/Win32 is empty. Can you please point me to the right link where i can download the dso file.

I am also attaching the compressed folder that i downloaded from the above said link.

Thanks a lot in advance.

Share this post


Link to post
Share on other sites
Guest xionmark

I downloaded the mantra_clusterThis_v1.4.7 from this link - http://www.digitalcinemaarts.com/dev/clusterThis/index.html

But i couldnt manage to find the .dso file in the folder. The folder dso/Win32 is empty. Can you please point me to the right link where i can download the dso file.

Greetings,

Sorry for the delays guys, up to my neck in activity, which is good but makes my guesstimates for new releases slippery at best.

As per your question about no DLL ... uhm well, it's kind of because I'm trying to get away from all Windows support, and if others want it, they can compile it themselves. The reason is, besides hating Windows in general, is that I haven't had time to figure out the VC8 install/compile. It was all working fine with .NET 2003, or VC7 I guess is what it's referred to, but if you look around the HDK forum you'll see there's a fair share of confusion about the whole thing.

WINDOZE has always been my lowest priority for platform support, but most, if not all the open source code we (DCA) writes and supports should be compilable on all SESI supported OS's. There are some kind souls on this forum who have created WIN versions, maybe contact one of them in case you don't have a compiler installed on you machine.

BTW: I've been writing a few of these mantra geo procedurals lately, much of the features that are in these other projects will find their way into the OSS versions. At least a half dozen new features in the next clusterThis release.

Mark

Share this post


Link to post
Share on other sites

Hey Mark!

I have a small problem with clusterThis on H10, i have compiled it and i got it to work but it pops in animation like getting bigger and smaller once in a while (like in the attached .mov file). I haven't had time to test it out in any other platform than i am on now (gcc version 4.1.2 20080704 (Red Hat 4.1.2-44), x86_64-redhat-linux) and Houdini 10.0.465, since no-one else have written about this, its probably me doing something wrong or having a bad mix of builds :)

Oh and i dont get any errors in the console, I just get the standard:

VRAY_clusterThis::exitClusterThis() - Preparing to exit!

VRAY_clusterThis::exitClusterThisReal() - Exiting

Cheers

/Magnus

ps. looking forward to the next version of clusterThis! =)

clusterThis_test_v001.mov

clusterThis_h10_linux64bit_compile.zip

clusterThis_test_v001_mtp.hip

Edited by Magnus Pettersson

Share this post


Link to post
Share on other sites
Guest xionmark

Hi Magnus,

It's from the "Fast Perlin" noise, it's "going through zero" (if you were to look at the signal on a graph). I've changed the noise to "Alligator", tightened up the radius a bit, etc. (see attached)

Take care,

Mark

Edit: Forgot to add the next version will have additional CVEX hooks so you can apply your own noise

(amongst many other things).

Share this post


Link to post
Share on other sites

Yes, in it's current state the clusterThis DSO will instance a single file, but I just finished a project where I use multiple files for variety of models, LOD and simple animation. I might be able to include some of this sort of thing in the next version. For instance, I could add an attribute with the string of the file to instance ... let me look into this a bit, I might be able to include this too.

As to not put this into the other thread.

I understand your dso comes based on the cluster procedural from surfs up, but it could be used for a much broader range of instancing with a few modifications.

I have been writing my own instancer dso (as if it instances delayed loads) for the past couple of weeks and here are some of the things I noticed and found quite useful to have in there that might be good additions for your dso too (some you have already mentioned):

- support for animated files (I found that often you have a cycle of animation and you can change the speed and blend the geometry on subframe level within the dso - this implies the pointnumbers do not change though.)

- support for several files (this can be based on an id attribute that generates random values between 1 and number_of_instances ) (I currently build the string to the file within the dso, I ask the user for a base path and a file name - a certain naming convetion formatting allows you to load in the right file with the right LOD from disk at the right frame ) - rather than storing the filename in a string attribute (although giving this as an extra option to choose from is always a good thing) I would add a "time" attribute per instance. Internally that can be used to look up where in the cycle your instance is.

- support for a instance_id attribute so you can also potentially specify "manually" which instance goes where.

- deformation and transformation motionblur (I got the transformation blur to work, but I found the deformation motionblur more tricky as you potentially need to clamp it so it does not go out of bounds.)

- support for LOD (This really makes huge difference in rendertime, but it can get tricky when dealing with different types of geometry:

eg.

LOD_0: full subdiv based on "low res" polygon geometry loaded from disk

LOD_1: just the polygon geometry

LOD_2: polygons are replaced by a "wire skeleton" - the lines have the width that matches the original shape of the rendered polygons. (The shader can fake the shading over the u,v of the patch -- this really renders fast!)

LOD_3: points

I found you can not only choose which LOD you need from the screenspace, but also based upon the resulting LOD you can set render parameters on the object, such as "render polygons as subdivision" (If this would be set on all LOD it would be very expensive and "lines" would not even render).

You can probably set a flag for "render as points" in exactly the same way:

openGeometryObject();
       //turn on subdivision surface rendering
       int subd = 1;
       int checksubd=20;
       checksubd=changeSetting("rendersubd",1, &subd, "object");
       std::cout<<"checksubd: "<<checksubd<<endl;
       addGeometry(g0, 0);
closeObject();

This is part of the VRAY_PROCEDURAL.h
// Change any setting on the object (geometry or procedural)
00309     //   * changeSetting(const char *name, const char *value)
00310     //          Parses the string into arguments and changes the setting
00311     //          If you want to change a setting to a single string value, it
00312     //          is better to call:  changeSettings(name, 1, &value);

- support for pointclouds (The GEO_Pointtree library is excellent for this -> it does a kd-tree inside!! - this gives you pretty much access to vex' pointclouds to lookup attributes and transfer to the points of the instanced geometry, that way you can influence and change the look of every single point in every instance if you wanted! Very powerful stuff! -> but perhaps you can already do that through your cvex... Personally I would appreciate a few examples (even if it is just describing what you did or how you used cvex with your cluster dso as I have not used it yet myself.) )

I would be interested to hear your thoughts on some of this - or how you would approach/have approached some of the above - or what other additions you think might be useful.

cheers,

Peter

Edit: Moderators, it would be nice if this would become a sticky post!

Edited by pclaes

Share this post


Link to post
Share on other sites
Guest xionmark

Hello,

Most of what you point out is already in the current DSO, *or* is available in the "pro" version, I can't give away all of my work ...

And to clarify, it's not based on what we used on Surf's Up, rather it was a response to how much was lacking in that particular tool, and, to make something like that available for Houdini users to learn from and use in production if so desired. It's primary purpose is for teaching and fun.

Mark

Share this post


Link to post
Share on other sites

ah, ok, I forgot about the pro version :) You should advertise it a bit more (if it is for sale that is). I respect and admire all the effort you have put into this and the version you share already has so much. As you mention, it is indeed fun to explore the power and the possibilities that come with exploring the hdk.

I have learned quite a bit of your dso, it is a great piece of work! So thanks again for sharing!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×