Jump to content


  • Content count

  • Donations

    0.00 CAD 
  • Joined

  • Last visited

  • Days Won


Everything posted by timmwagener

  1. chateau de sable (sand castle) Short movie

    Congratulations, great work!
  2. Hey guys, I'm sure that everyone who has ever attempted rendering in Hou has experienced the pleasures of using expression functions and pattern matching. The workflow of formatting your target content (geometry, lights etc.) together with this syntax is truly powerfull. For example: I want to render a character and everything else to mask him. Group and expression operators make that easy and dynamic: Render Objects: @character Mask Objects: !@character However at some point the group of @character has to be expanded and the ! negation-operator has to be resolved before the concrete pathes are used to generate the information consumed by the renderer. I guess this is the job of the Pattern Matching and Expression Library I am referring to in the title. Now on an abstract level, this is just a powerfull language for users to dynamically describe (sub-)sets of data which they wish to use for something. Same principle - different data sources: Now what if your Object Names in the Mantra node whose patterns and expressions will be evaluated would not refer to objects in networks but to entries in databases? @group_name string expansion could result in all database entries whose "Group" field matches "group_name". (and of course !@group_name would result in the opposite...) What if we are not talking Mantra ROPs anymore, but maybe a Pyside Standalone or Web Application that lets you enter these patterns and expressions to describe the datasets to pull from any database? How to ?: Does that sound realistic/reasonable/doable at all? If so, do you know any libraries that define expression languages/operators and expose solvers for them? (Sympy!?) Are there some details on how Houdini handles that? How would you go about implementing a Mantra ROP like application that exposes string fields where people can use pattern matching and expressions to describe data that is then pulled from databases?
  3. Houdini Pattern Matching Mechanism/Library

    Hey Guys, work went along pretty well and I feel like I got the basics in place (expansion solver, pattern matching solver). I'm currently in the process of writing tests to verify the solver and I use Houdini as the initial source of truth. And therefore I have been stumbling upon something that seems kind of strange. The following expressions are in the Mantra ROP Candidate Objects field: A ) * ^@bdl_spheres sphere_a sphere_b <-- Renders everything in Houdini B ) * ^@bdl_spheres sphere_* <-- Renders everything except sphere_a sphere_b in Houdini In my solver B ) renders identical to A ) (everything) and therefore the test fails as I test against Houdini ground-truth. I attached my test scene if you want to give it a try. Please keep in mind these expressions are for programmatic unit tests and not actual expressions that would be used in production. @bdl_spheres contains sphere_a and sphere_b Anyone any ideas? Is there something particular to know about operator precendence? houdini_pattern_test_a_0001_tw.hipnc
  4. [Animated Short] Helga

    Helga*(working title) WIP thread for our animated diploma short film Logline A rodent-knight, his wife and his best pal.Celebrating the return from a bloody crusade, the two brothers in arms boozing tankard after tankard in a rustic tavern. The night was good if it wasn’t for the knight’s short tempered wife. Claiming her husband only for her own she antagonizes the two pals leading them straight into a fast paced bloody duel. Genre A 3 minute black comedy shortfilm. Miniature built set (eventually digitalized with photogrametry) combined with CGI characters. Characters A rodent knight: Ulfbert Short tempered wife: Helga Best pal: Snorri (he's joining soon) Sculpts Moods Techniques As the directors goal is to reach some creepy semi-realism lookwise, we are trying to rescue that handmade feeling of a real set over in CG. Miniature Set: A real set is currently being built (photos soon). Photogrametry: We are currently experimenting with using photogrametry and scanning the real set to digitalize it. Tests are in progress and i we can show images soon. The goal is to transfer the rich detail and special look of a handcrafted set into CG to harness the power and freedom of full CG animation workflows. In the optimal case we would end up with geometry and diffuse textures captured from set, reassembled and light/rendered in CG. Cameras could be full CG too, then. CG character integration: The characters will be CG in any case. Software Here's what our CG pipeline looks like. Animation, Rigging: Maya Effects, Cloth, Fur, Lighting/Shading: Houdini/Mantra Comp: Nuke Photogrametry: Agisoft Photoscan Why this thread? We, as the TD team, made the decision to run our CG pipeline partly with Houdini. Not because we are experienced users, but more because we want to learn the software Animation and rigging will be done in Maya and effects, lighting/shading, fur and cloth will be done in Houdini. As beginners with Houdini we are sure to encounter lots of questions (problems, workflows, best practices, pipeline organization) along the way, and we'd like to use this thread to raise them as they appear. See you soon for some progress Cheers, Helga Team
  5. Houdini Pattern Matching Mechanism/Library

    Well, obviously this is just the first best example I could think of However the basic idea behind this approach is for the UI to be data agnostic while providing maximum flexibility for the user. As a programmer you would provide the data (databases) and the rules/language to interact with it (which I hope to find very well implemented/standardized in third party libraries). I expect users to come up with expressions quickly that far exceed the possibilities of any UI. From my experience, once you used string based pattern matching, group expansion and expressions (like in the Mantra ROP) you never want to return to applications that force you to wrestle with the UI to format your content together (...think renderlayer/overrides in Maya as an example). Additionaly a simple string value is nice and easy to query/store/process. Also think of cases where the dataset in question is subject to constant updates. An * operator would always take care of that, which would be pretty hard to achieve in UIs that change based on data. Concerning libraries, Pythons fnmatch package might be worth a look....however it does not seem to suport nice operators like ^ (except).
  6. Houdini Pattern Matching Mechanism/Library

    Thanks for your answer! I feel like I a good example of what I want to achieve might be very helpfull. Lets think of a web application We move completely away from Houdini as a platform here. What we want to do is create a web application that lets people create and render genealogical trees of animals in their browser like so, so or so. When they enter the adress of our website, they are presented with a form that has just one textfield called animals. Here they enter their patterns and groups in Houdini exression language to express for which set of animals they want to draw the genealogical tree. The backend solver expands the groups, solves the patterns and operators and delivers the valid subset of animals to the gen. tree render engine. The backend also has a big database where all animals of the world are in and they are also linked with groups like mammals, reptiles, pokemon etc. Program flow 1. User enters an expression in the animal web form like: @mammals ^elephants firebellytoad , and hits submit in the form. 2. An url is submitted like https://genealogical-tree/get/animals=@mammals^elephants firebellytoad 3. Via REST API we call the function solve_aimals(expression=@mammals ^elephants firebellytoad) in the backend. 4. The solver a) expands the groups (@mammals) evaluates operators like ^ (except) 5. After the matching animals are solved (In this case all mammals (horses, bears, whales...) except elephants and the firebellytoad, which belongs to amphibia) the results is returned 6. Call render_genealogical_tree(resulting_list_of_animals) and display the result in the browser. Where do the animals come from The possible animal names are stored in a big database, like possible geometry names in Hou are in networks. Groups of animals are pointed to in database tables, as groups of geo objects are linked in the bundle editor. How To? Are there libraries that define pattern matching, a possible set of operators and according solvers (maybe even some grouping/expansion mechanisms) ? I feel like supporting some sort of well established standard here would be much preferable over building something yourself with regex etc. Does Hou use a third party library for this by chance or is it at least oriented on some well known libraries? In general, how would you approach this undertaking? ...hope this makes my intentions a bit clearer!
  7. [Animated Short] Helga

    I wrote our producer an email about that, he knows about contracts, dates etc. Will edit his answer in, once it arrives! (However it feel like remembering a timespan of two years floating around from time to time.....that would mean 1 year to go)
  8. TheDeerDance

    How about some updates?
  9. Animated Spot starring Mantra

    Looks awesome! (....although I cannot look at butter packshots anymore like I could in the past )
  10. [Animated Short] Helga

    Hey guys, it's been a while since we wrapped up the work on Skål. However today happy news reached us which I want to share with you: Skål has been nominated for a VES Award in the category Least Serious Most Violent Best Student Project! We are happy about this recognition of technical craftmanship and think this is a good opportunity to once again thank the odforce gang for their help on exactly that aspect, general encouragement and those GGX shaders!
  11. Dennis Albus | Technical Reel 2015

    Hey Dennis, this seems to be quite the same approach that a buddy once used to build a Curvature Shader like this with the Vray SDK. Instead of interpolating the sample values shot from the inverted normal, he would average the distance of the vectors until a point was hit, compare them to the distance of the point used to shot from and then just map them to a color. This results in a "bendiness" pixel value and also indicates if the bending is forward or backward. This might be useful as an alternative dirt map approach, especially to mask worn edges or scratches on metal. If Houdini doesnt have something like this already, it seems like you are already half the way there! Great work!
  12. Dry Lights

    Looks great, congratulations! I remember hearing about Clarisse a while ago....will be interesting to see how it is accepted in the industry within the next years.
  13. [Animated Short] Helga

    Hey guys, i have put together a Render & Comp breakdown, where you can see some of the stills from above in motion. Sorry we cannot show more until the festival circuit is over, but this might give you a small taste of the madne ... magic
  14. [Animated Short] Helga

    Thanks It's probably gonna be released in a year, after the festival run....
  15. TheDeerDance

    Looks great!
  16. [Animated Short] Helga

    Hi guys, it's time for a final status update. The movie is about 90% finished, currently sound and credits are being done. It was a tough ride, but in the end we managed to be amongst the first teams to finish in our year at Filmakademie. Apart from Modeling, Rigging and Animation all 3D was done in Houdini. We rendered with Mantra. The Houdini crew from the show is already in holidays or will be so in the next days The Houdini Dudes: Timm Wagener - Lead TD, Pipeline, Lighting, Shading, Photogrammetry & Compositing (Website, Vimeo, Github) Manuel Seifert - Lighting, Shading & Fur (Vimeo) Johannes Franz - FX & Cloth (Website, Vimeo) During the production we had great support from some members of the Houdini community. Big shout out to: Dennis Albus!, Niko Wuttke! and Demian Kurejwowski! Also a huge thanks to the odforce forum which we used a lot Lets finish with some frames from the movie: - - - - -
  17. Hey guys, i just found out, that it's possible to let several machines render on the same frame over the network with Mantra, similiar to VRay Distributed Rendering for example. I tested it out and it seems to work. The render statistics explicitly list the different machines and their contribution in percent. One thing though seems a little strange: I encounter no performance boost. Instead of doing more work in the same timeframe, Mantra seems to just distribute the existing work. The satelites, as well as my own machine, dont run at 100% but at 30% instead. If i turn of -H, my machine runs at 100% again. I have "Use Max Processors" turned on. Also tested around with the tiled render options.... Anybody any ideas? A VRay DR equivalent in Mantra sounds pretty awesome
  18. [Animated Short] Helga

    Hey guys, an important update The working title Helga has been replaced with the final movie title "Skål". The Helga team is now officially the "Skål" team, and we are happy to present you a short teaser for the movie, featuring a staring contest with a medieval hamster that has some anger management issues. FX, Fur, Lighting, Shading & Rendering done in Houdini, Mantra If you scroll down the credits list until "Special Thanks", you will find some names from this forum.Thanks guys!!
  19. [Animated Short] Helga

    Hi guys, some updates from the Helga Pipeline department. I'd like to present a little tool, which helps us in production here, called renderthreads. Originally developed within the helga pipeline to speed up local renderings, i moved it out into its own repository since it didnt really need tight coupling and could be shared easier this way. Feel free to download and try it ------------------------------------------------------------------------------ --- ------------------------------------------------------------------------------ What is it ? renderthreads is a Python package that enables easy per-frame command-line multithreaded rendering for the popular compositing application Nuke. It does so by dividing your sequence into chunks of one frame each and spawns a render on the command line for each. You can track the progress or abort the render anytime. Jobs that crashed are detected and added back to the queue to be rendered again. By default each new command line render uses the same interactive license, as the Nuke you started the tool from. For example the nuke comp you see in the introduction video (Full HD, 222 Frames) renders with default Write node: 5 hours with renderthreads (on 31 cores): 1 hour What i's not ? A replacement for your renderfarm or a full render manager. Its usefull when you want to speed up your local rendering. Links Download it here Quickstart Docs Github Report a bug? Author
  20. [Animated Short] Helga

    Hey guys, a quick status update: Our main hero Ulfbert in all his glory. - Rendered with the GGX materials from this thread and lots of Houdini Fur. Production is still operating under high pressure to meet the tight deadlines.
  21. Generating ST maps in Houdini

    I did this lately, just plugged UV inside a shader into R&G and exported it as a color variable to an image plane. However i was wondering how to deal with UDIMs? I did not allow for values above 1 in U or V by subtracting the real UV with their floored versions before plugging into Red and Green. For example, UDIM U coords of 3.6 become (3.6 - 3.0) 0.6 in my stmap giving the familiar red-green look. Not sure though if this the right way, or if i should just allow values above one ?
  22. BSDF Bonanza: GGX, Microfacets, Disney BRDF and More

    Works! Thanks
  23. BSDF Bonanza: GGX, Microfacets, Disney BRDF and More

    Hey guys, i'm encountering some strange behaviour with the GGX BRDF node from the v1.1 stable release of the otl. Basicaly when i'm turning on anisotropy, i get strange blocks for polygons. Here are some screenshots The error is happening in the direct reflection. Indirect reflection looks right Edit: K, it doesnt seem to be an issue with the GGX nodes, it also happens with a normal PBRSpecular node and anisotropy turned on... Must be something with the scene setup. Anistropy on (problem): Anisotropy off (clean): Here's how i wired it up: Is this some known problem or am i using it wrong?
  24. Hi guys, i have a question concerning light components in H13. I have the following case: I want a light that only contributes to direct diffuse illumination. According to the documentation it should be possible with the category syntax to do just that, however i cannot seem to get it working. Here is the use case: The candle on the table has no illumination. The illumination comes from a sphere light. The sphere light has indirect contribution turned off because of noise issues. However the sphere light still contributes to direct reflection, where only the pyro sim should contribute. I cannot seem to dissable everything but direct diffuse on the sphere light....