od[forum]: eetu's lab - od[forum]

Jump to content

  • (6 Pages)
  • +
  • « First
  • 2
  • 3
  • 4
  • 5
  • 6
  • You cannot start a new topic
  • You cannot reply to this topic

eetu's lab odds and ends

#37 User is offline   Jason Icon

  • King Tapir
  • PipPipPipPipPip
  • Group: Admin
  • Posts: 3,577
  • Joined: 08-November 00
  • Gender:Male
  • Name:Jason
  • Iversen

Posted 10 February 2009 - 09:54 AM

View Posteetu, on Feb 10 2009, 05:45 AM, said:

Any general advice on how to coax Mantra into loading and flushing things on demand?


I'm afraid not - I'm wracking my brain trying to remember if there was some limit you can supply.. but nothing.


View Posteetu, on Feb 10 2009, 05:45 AM, said:

Probably it won't matter one bit if my bucketed points are loaded in as .bgeo or .pc, as all the points will
never fit in memory. The key is getting them flushed after they are no longer needed..
eetu.


True, yeah. Assuming you can eventually get Mantra to flush, the only potential convenience is that the .pc format could make coding a procedural easier due to its spatial storage... maybe.

I hope a SESI person will throw in a hint:)
jason iversen
++odforce guy, and supervisor @ r+h
0

#38 User is offline   ranxerox Icon

  • Peon
  • Pip
  • Group: Members
  • Posts: 82
  • Joined: 28-April 08
  • Name:gregory
  • ecker

Posted 13 February 2009 - 04:04 PM

hey Eetu, is there any way you could explain what you did here in a little more detail. I was interested in trying something like this so I used a foreach sop with a scatter sop and a copy sop within it. Tried a bunch of different things which look close but I'm still not getting it quite right. Any hints you might be able to provide to a houdini noob would be greatly appreciated.

thanks

-ranxx

View Posteetu, on Feb 3 2009, 06:50 AM, said:

Aggregation.

A friend of mine made a fast dla in xsi's ice, so I naturally had to give it a try.

Posted Image

anim1
anim2

dla in wikipedia and in pictures.

From the start I decided to fake it. I started thinking about the probability of any point in any timestep receiving a randomly walking new aggregate particle.
I thought it would be close to occlusion at that point, so I made an occlusion scatter component.
Posted Image

Each frame I occlusion-scatter a couple of points on last frame's geometry, and then copy new geometry to those. Iterate to taste.

A nice thing about this approach is that one can have invisible geometry constraining the aggregation process.
(The first anim is constrained inside a sphere, the second a torus.)

The particle counts here are really quite low, perhaps I'll leave it running the next time I go for a vacation :)

eetu.

0

#39 User is offline   eetu Icon

  • Initiate
  • PipPip
  • Group: Members
  • Posts: 223
  • Joined: 30-May 07
  • Location:Helsinki, Finland
  • Name:e
  • m

Posted 14 February 2009 - 03:49 PM

View Postranxerox, on Feb 14 2009, 02:04 AM, said:

hey Eetu, is there any way you could explain what you did here in a little more detail. I was interested in trying something like this so I used a foreach sop with a scatter sop and a copy sop within it. Tried a bunch of different things which look close but I'm still not getting it quite right. Any hints you might be able to provide to a houdini noob would be greatly appreciated.

Hi,

I don't have that scene here, but things you might look for;
checking for occlusion (Ray SOP) so that scattered points do not lead to interpenetration,
scatter only on the latest generation of geometry, and
there are many ways to skin a cat in Houdini, but I don't think I used foreach here. Roughly: file read, scatter, copy, file write.

eetu.
A shitty theory is better than no theory at all
0

#40 User is offline   eetu Icon

  • Initiate
  • PipPip
  • Group: Members
  • Posts: 223
  • Joined: 30-May 07
  • Location:Helsinki, Finland
  • Name:e
  • m

Posted 14 February 2009 - 03:56 PM

Volume blurring. From Sidefx forum.

A quick implementation of gaussian volume blurring with a Volume VOP network. It's a bit dirty as it takes random samples, and the distribution is neither right nor optimal.

Posted Image

I like volumes.

eetu.

Attached File(s)


A shitty theory is better than no theory at all
0

#41 User is offline   sanostol Icon

  • Illusionist
  • PipPipPip
  • Group: Members
  • Posts: 382
  • Joined: 09-January 06
  • Location:Munich, Germany
  • Name:Martin
  • Matzeder

Posted 14 February 2009 - 11:22 PM

View Posteetu, on Feb 14 2009, 03:56 PM, said:

I like volumes.


And volumes seem to like You. Astonishing explorations.
Martin Matzeder - Booyabase
0

#42 User is offline   diula Icon

  • Peon
  • Pip
  • Group: Members
  • Posts: 31
  • Joined: 01-September 05

Posted 16 February 2009 - 05:44 AM

eetu, could you please explain in more detail the method of creating new particles from the input point geometry?

How do you determine the position of the newly created particles? I've read some articles online
that suggest constructing a bounding sphere between the original point and the closest point to it,
then randomly populating new points within the sphere, but you're obviously doing something different...
0

#43 User is offline   eetu Icon

  • Initiate
  • PipPip
  • Group: Members
  • Posts: 223
  • Joined: 30-May 07
  • Location:Helsinki, Finland
  • Name:e
  • m

Posted 16 February 2009 - 06:31 AM

View Postdiula, on Feb 16 2009, 03:44 PM, said:

How do you determine the position of the newly created particles?


For every point in the previous generation spheres, I calculate
approximate occlusion with the Ray SOP. The collision primitives
also include all the generations thus far, plus any invisible restraining
geometry you might want to use.

Then I scatter points on the previous gen spheres, according to the
above occlusion attribute.
("Alternate Attribute" option in Scatter SOP)

I think I created 8 new points per generation here.

eetu.
A shitty theory is better than no theory at all
0

#44 User is offline   diula Icon

  • Peon
  • Pip
  • Group: Members
  • Posts: 31
  • Joined: 01-September 05

Posted 17 February 2009 - 07:13 AM

View Posteetu, on Feb 16 2009, 04:31 PM, said:

How do you determine the position of the newly created particles?


Sorry, I phrased myself badly. I was asking about particle generation technique in the 'Billion points' project :)
0

#45 User is offline   eetu Icon

  • Initiate
  • PipPip
  • Group: Members
  • Posts: 223
  • Joined: 30-May 07
  • Location:Helsinki, Finland
  • Name:e
  • m

Posted 17 February 2009 - 08:13 AM

View Postdiula, on Feb 17 2009, 05:13 PM, said:

Sorry, I phrased myself badly. I was asking about particle generation technique in the 'Billion points' project :)


Haha, oops! :)

For the first frame initial particle generation, I just make n copies of the original particles, with a random
offset, which amounts to just copying a cotton ball to each particle. The method you describe would be an
improvement, at least in some cases.

For subsequent frames I do not generate any new particles, I 'resimulate' and move the existing particles.
This is less flexible than explicitly generating particles at each frame, but ensures temporal coherence and
will make motionblur easier. The cotton balls go away in a few frames. I have some ideas about improving
the initial distribution, it should be easy as it needs to be done for only one frame.

eetu.
A shitty theory is better than no theory at all
0

#46 User is offline   ranxerox Icon

  • Peon
  • Pip
  • Group: Members
  • Posts: 82
  • Joined: 28-April 08
  • Name:gregory
  • ecker

Posted 17 February 2009 - 08:14 AM

sorry to clutter up your lab with questions :) It would be nice if we could fork off threads so that the main thread doesn't get hijacked :ph34r:
In any case, thanks for your explanation. I was trying to use the foreach sop so that I could have an unspecified number of generations (recursion would be ideal). Did you created a subnetwork per generation, or something like that ? Read your points, scatter your points, copy spheres to points, write points to file, repeat ? How did you repeat if not with a foreach sop ?

thanks, last question I promise.

-ranxx

View Posteetu, on Feb 14 2009, 03:49 PM, said:

Hi,

I don't have that scene here, but things you might look for;
checking for occlusion (Ray SOP) so that scattered points do not lead to interpenetration,
scatter only on the latest generation of geometry, and
there are many ways to skin a cat in Houdini, but I don't think I used foreach here. Roughly: file read, scatter, copy, file write.

eetu.

0

#47 User is offline   eetu Icon

  • Initiate
  • PipPip
  • Group: Members
  • Posts: 223
  • Joined: 30-May 07
  • Location:Helsinki, Finland
  • Name:e
  • m

Posted 17 February 2009 - 08:49 AM

View Postranxerox, on Feb 17 2009, 06:14 PM, said:

In any case, thanks for your explanation. I was trying to use the foreach sop so that I could have an unspecified number of generations (recursion would be ideal). Did you created a subnetwork per generation, or something like that ? Read your points, scatter your points, copy spheres to points, write points to file, repeat ? How did you repeat if not with a foreach sop ?


The repeat is done using the file read and write. At start of every frame I read the previous
generations from disk, eg "feedback_`$F-1`.bgeo", and at the end I save the current plus
previous generations to "feedback_$F.bgeo". This is a pretty common technique, I think.

If you do not want to retain all the steps, you could just read/write with a static filename,
but I like to store an animation of the process ;)

These days there is also the new Feedback SOP..

A simple example of the file method attached.

eetu.

Attached File(s)


This post has been edited by eetu: 17 February 2009 - 08:47 AM

A shitty theory is better than no theory at all
0

#48 User is offline   ranxerox Icon

  • Peon
  • Pip
  • Group: Members
  • Posts: 82
  • Joined: 28-April 08
  • Name:gregory
  • ecker

Posted 17 February 2009 - 08:51 AM

ahh of course, thank you !

-ranxx

View Posteetu, on Feb 17 2009, 08:49 AM, said:

The repeat is done using the file read and write. At start of every frame I read the previous
generations from disk, eg "feedback_`$F-1`.bgeo", and at the end I save the current plus
previous generations to "feedback_$F.bgeo". This is a pretty common technique, I think.

If you do not want to retain all the steps, you could just read/write with a static filename,
but I like to store an animation of the process ;)

These days there is also the new Feedback SOP..

A simple example of the file method attached.

eetu.

0

  • (6 Pages)
  • +
  • « First
  • 2
  • 3
  • 4
  • 5
  • 6
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users