Jump to content


  • Content count

  • Donations

    0.00 CAD 
  • Joined

  • Last visited

  • Days Won


kiryha last won the day on November 23

kiryha had the most liked content!

Community Reputation

69 Excellent


About kiryha

  • Rank
  • Birthday 05/06/1977

Contact Methods

  • Website URL

Personal Information

  • Name
    Kiryha Krysko
  • Location
  • Interests
    Houdini, Photography, Cookery

Recent Profile Visitors

2,621 profile views
  1. How to Copy Houdini's Mantra to Nuke

    I don't know how to utilize such functionality via copy-paste... But as an option, you can build a Python script for Houdini which (with selected Mantra Node) will run Nuke and create a reader with exr: import subprocess import hou NUKE = "C:/Nuke12.1v2/Nuke12.1.exe" mantra = hou.selectedNodes()[0] exr_path = mantra.parm('vm_picture').eval() command = 'C:/temp/nuke_create.py' subprocess.Popen([NUKE, '--nukex', command, exr_path]) and the content of nuke_create.py would be: import sys import nuke exr_path = sys.argv[1] nuke.nodes.Read(name="My_EXR", file=exr_path)
  2. How to Copy Houdini's Mantra to Nuke

    Do you want to have Mantra render engine in Nuke, or you just need to load rendered image (exr or whatever)? To load image in Nuke you need to create Reader node and provide a path to this image: import nuke path_exr = "C:/temp/awesome_render.exr" nuke.nodes.Read(name="My_EXR", file=path_exr)
  3. Python 3, using old Python 2 scripts

    My bad, you are right. But I was assuming the script is quite simple, and in that case, I guess it can be easy to update.
  4. Python 3, using old Python 2 scripts

    There is no such a big difference between Python2 and 3, so re-writing should not be hard. In Python 3 "print" is not a statement anymore, it is a function, which means you have to place everything in parentheses: print ('Hello, World!')
  5. Reading .env file from a centralized directory

    In case you need an example for the Houdini wrapper...
  6. VEX Array Functions

    Interesting... I don't have a particular solution, but in general, if you will be able to avoid nested loops (which complexity is O(n^2)) it will increase the algorithm speed. E.g. "Find Different Elements in Two Arrays" twice faster than "Find Common Elements in Two Arrays". And keep in mind that sorting also takes time. Higher speed can be reached by the cost of higher memory usage (you can store results in a variable/hash table and check them before the next calculation). You may find some ideas here: https://leetcode.com/problems/intersection-of-two-arrays/solution/ Though on arrays of such length you would not notice any difference.
  7. How to practice and get good at Vex?

    There is no better answer than practicing a lot. Learning is a repetition.
  8. Some Advices?

    I think the common and most efficient way is networking. This is when you find a person in a studio you want to work in and ask this person for help. The best option if you have something in common with this person, e.g. you know each other, or you have at least a common friend or maybe you are from the same town or graduated from the same university. So you say "Hello" and ask for the help, but not directly to get a job in this studio, better to ask if he/she could assist in a resume and show-reel polishing, query for some advice on how to improve your chances to get a good position. It's basically a lot of time on Linkedin or in such places like this forum. I know how hard it could be to get a new job at a new place so I wish you luck! And patience.
  9. Sorting in order

    @dolexd Take a look at this VEX tutorial
  10. Idea VFX pipeline for Houdini

    I think we need to examine Solaris workflow to understand how SideFX supposes to handle project data to avoid such things. As I understand, they came to a Solaris solution working with several big studios and it should be the way to go. The USD based pipeline makes integration of Maya as an animation tool a lot easier as well. I feel that Houdini did not beat Maya in the VFX industry completely (yet) only because of the painful transition for animation artists and pipeline TDs
  11. Idea VFX pipeline for Houdini

    Hello Dupe, I also had the same question a while ago. This topic about animation transfer could help. And despite this animation pipeline is super draft it still might be useful. I would say that a good starting point could be defining the project management system (e.g. Shotgun, Ftrack or custom tools). PS. why not to use Houdini for animation and rigging as well? The 18.5 looks even more powerful in this field?
  12. Get list of HDA versions

    Hello Martin Maybe you can find something useful in this topic
  13. I am discovering a Data Structures topic and implement a Hash Table in VEX as an exercise. Despite it is totally useless in real production it still could be worthwhile as an example for similar tasks. Create a library.h file and save it to any location, e.g. C:/library.h The content of the library.h file: // The library.h content // VEX Hash Table implementation for {string:float} pairs struct hash_table{ int array_len; // Limit array length float data[]; // Init data int build_index(string key){ // Build and return index for array from string int index = random_shash(key) % this.array_len*10; return index; } void add_item(string key; float value){ // Place item value in array at index position int index = this -> build_index(key); this.data[index] = value; } float get_item(string key){ // Get item from array by position int index = this -> build_index(key); float value = this.data[index]; return value; } } Now in Attribute Wrangle (Detail mode) you can build a shopping list: #include "C/library.h" // Initialize hash table float data[]; int table_size = 10; hash_table fruits_number = hash_table(table_size, data); // Add elements to hash table fruits_number->add_item('apple', 256); fruits_number->add_item('banana', 1024); fruits_number->add_item('strawberry', 512); // Get element from hash table float number_of_apples = fruits_number->get_item('apple'); printf('Amount = %s \n', number_of_apples); // Result: Amount = 256 More on creating and importing custom modules with VEX
  14. How handle this mushroom shape procedurally ?

    Hello, Konstantin! Can you please explain the magic happening in the "skin" wrangle? v@uvw = relbbox(0, v@P); @uvw.y = fit01(@uvw.z, 0, 1); v@P = primuv(1, 'P', 0, @uvw); As I understand, in general, you are wrapping a grid around the torus with primuv, and with a fit01, you define where the wrap starts/ends. But in detail... What is the @uvw attribute, why it's used in primuv function and what this function is doing? Why the fit modifies Y attribute relying on Z?
  15. From Command Line Tools running exe file is working!