Jump to content


  • Content count

  • Joined

  • Last visited

  • Days Won


Everything posted by yongbin

  1. Hello, We are in stuck to find good approach for working with programs that has different unit system. We use maya, houdini, katana and nuke and they have different unit systems. Maya has centimeter unit system. Houdini and katana have meter unit system. Nuke does not specify their unit system. Scene generated from maya is too big for houdini and katana, and raise many issues. Dynamics are unrealistic in houdini, light are too bright in katana. Currently we scale down whole alembic scene (which is made in maya) as soon as we import it in houdini. (With some camera tweek.) Maybe similar solution could applied to katana. (We are not exploring yet.) We can work that way. But our compositors is not happy with it. Because they have to composite images rendered in both maya and houdini. Channels containing z or vector are different, and 'deep image' is not matched, so they should scale it. They want unified images even if they render from different programs. So we tried to change maya's unit system to meter. It failed because it's viewport does not properly working with small objects. (say 0.0001m). And alembic export has bug that it does not working well with meters. What would be alternatives? Does anybody use centimeter unit in houdini? (and katana also?) Please let us know if you have better solutions.
  2. Sorry, I exaggerated a bit. But I think we are frequently dealing in millimeter. (edge of an product?) And if we think maya's unit as a meter, maya's viewport is not working well in millimeters.
  3. Is it easy to scale back the scene? What method do you use?
  4. Is there a fast, easy way to render unconnected frames? [2 13 55-63 99 ....] In houdini, or in command line. Thank you.
  5. Hi all, With given points, how could i render it like blobby object? Could I make blobby shader with material node or cvex shader? Or maybe in HDK? Thank you.
  6. How to create blobby shader in houdini.

    Hi, sebkaine, Thank you for the site. It looks great!
  7. How to create blobby shader in houdini.

    Thank you for the suggestion, kungFu. Unfortunately, I want render lots of points. (flip fluid, at least 10 million), I observed it's quite slow to render that amount of metaballs. But maybe I'm wrong. I don't know there is any advantage when I use shaders over metaballs. Do you know about it?
  8. How can I access my FORVALUE in foreach sop, if I choose "for each group"?
  9. Hi, houdini dev guys! I am studying hdk and implementing a basic sop. It is similar with polyframe sop. Now I am stuck with calculate average normal on a curve.(like facet sop) There should be a method for this. I find some calculateNormal functions on here and there. But I couldn't figure out which is one and how can I apply it. So, please help me. General advise are also welcome! Thank you. // calculate curve's tangent or N ... OP_ERROR CurveAttrib::cookMySop(OP_Context &context) { if (lockInputs(context) >= UT_ERROR_ABORT) return error(); duplicateSource(0, context); GA_WOAttributeRef tangentRef; tangentRef = gdp->addFloatTuple(GA_ATTRIB_POINT, "tangent", 3); const GA_AIFTuple *tangentAIF = tangentRef.getAIFTuple(); GA_RWHandleV3 Phandle(gdp->findAttribute(GA_ATTRIB_POINT, "P")); GEO_Primitive *prim; GEO_AttributeHandle gah; GA_FOR_ALL_PRIMITIVES(gdp, prim) { GA_Range ptrange = prim->getPointRange(); GA_Size npt = prim->getVertexCount()-1; GA_Offset lastpt = prim->getPointOffset(npt); GA_Offset firstpt = prim->getPointOffset(0); bool curve_is_closed = false; fpreal area = prim->calcArea(); if (!SYSalmostEqual(area, 0.0)) { curve_is_closed = true; } for (GA_Iterator iterpt(ptrange.begin()); !iterpt.atEnd(); ++iterpt) { GA_Offset ptoff = iterpt.getOffset(); UT_Vector3 tangent; UT_Vector3 Pcurr; UT_Vector3 Pnext; if ((ptoff==lastpt) && curve_is_closed) { Pnext = Phandle.get(firstpt); Pcurr = Phandle.get(ptoff); tangent = Pnext-Pcurr; //circular } else if ((ptoff==lastpt) && !curve_is_closed) { Pnext = Phandle.get(ptoff-1); Pcurr = Phandle.get(ptoff); tangent = Pcurr-Pnext; //backward } else { Pnext = Phandle.get(ptoff+1); Pcurr = Phandle.get(ptoff); tangent = Pnext-Pcurr; } tangent.normalize(); tangentAIF->set(tangentRef.getAttribute(), ptoff, tangent.data(), 3); } } gdp->notifyCache(GU_CACHE_ALL); unlockInputs(); return error(); } [/CODE]
  10. Thank you for your kind reply! The page looks like a great article! I will look into it!
  11. Hi, Stalkerx777. Thank you for answer for this! But I am really a C++ primer. So, all the type conversions break my head. I have questions about the conversions. 1. How can I sure the static_cast (GEO_Primitive to GEO_Curve) is safe? I've heard static_casting base class to derived class may somewhat unsafe. 2. Why did you use castTo() method for GEO_Curve to GU_Primitive? It seems they don't make any relationship in perspective of class hierarchy. Is it possible to conversion? 3. Why did you use (GU_Curve *) instead of static_cast<GU_Curve *>, although (GU_Primitive -> GU_Curve) looks similar to (GEO_Primitive -> GEO_Curve). It is hard to understand about C++ conversion even if I've read some documents about type conversion on web. (In C++, usually class hierarchy is too big and have so many conversion methods!) Thanks in advance!
  12. i saw geometry node in cops. but which didn't pick up the point color from my geometry. how can i? or another node to pick geometry's point color to cops? p.s - is there a basic cops tutorial?
  13. Hi, I have a question about an otl handle. I want get the handle from it's inside polyextrude node. But I don't know how can I export it. I manually made handle and mapping to polyextrude node (from Type Property > handles) . but it appears in a wrong place. Is there any good method for this? I will upload my scene. Thank you! hairfarm.hipnc
  14. Hi, edward. That works like a charm. Thank you very much for your help! I tried this before, but my fault is that I didn't open type property window when I export handle to digital asset. Even I notice there is a warn window for that!! shame on me. Thank you again!
  15. Have you tested opchange hscript? Try open hscript textport, and type follow. opchange /media/data/proj/int/Dec2013/seq1/assets/stand_rig \$HIP/textures It might help you. But if you think something go wrong, just Ctrl-z or don't save file and quit. * sorry, I miss spelled textures -> textrues, I corrected it.
  16. Hi, I am writing my own render script. It should be applyed to every hou.RopNode node. But each node, it's parameter name is different. For example, mantra->'vm_picture', rop output drive->'sopoutput', file cache->'file'. I can iterate and find exact one, but it seems not complete. Is there a generalized method for it? Thank you.
  17. Thank you, animknight and TxRxFx. When I said "not complete", I mean there are many rop nodes and sometimes it will added or changed. so, I felt It isn't complete. But if there isn't a generalized method. O.K. I will use conditions or, spare parameter. As you suggested to me. Cheers,
  18. Hi all, I have a question. If I pelted my exterior uv by hand, how can I pelt my interior uv fit for exterior uv? It should done procedurally. My question better explained in my sample file. If anyone know some clue, please help me! Thank you. uvunwrap_only_interior.hipnc
  19. Delete DOP object with python

    Hi, How can I delete DOP object with python? I couldn't find delete method in hou.DopObject yet. Thank you,
  20. Delete DOP object with python

    Good news with this 13.0.268 release! I checked houdini journal and found this.
  21. How to approach this kind of loop.

    Hi, I saw your scene. I can clearly understand, what's in your mind. You are right. Point wrangle is just a wrapper of vopsop+inline code. vopsop is little more flexible than just wrangle. Especially if you have to export many params, (like for noise vop). vopsop is much better option. Cause you can export many params at once. But surely you can export parameters in wrangle too. Click the gear icon, and "Edit Parameter Interface". In the window you can add parameters. Then import(or reference) it with ch("parmname") I like wrangle because I don't have to go inside. Dive in and out again and again make me quickly tired. Also, you can comment in wrangle. But if you want color it, I am afraid that you can't.. So, freely choose it. It is matter of taste! Vopsop vs Attribvop(vex vs cvex), I don't know what is really different between two. I heard that cvex is made by C and so faster than just vex. But I'm not sure about it. In H13, You can choose iterate type in attribwrangle. But we can't do that for vopsop. So I suggested it to you. But in H12.5, I guess there is no significant difference. And yes, Python is slow... Don't iterate it with 1000000 points . But many times it is acceptable for me. In H13(sorry, again!), python comes with numpy! So, you could do more things with python without worry of speed. That's all I know. Cheers,
  22. How to approach this kind of loop.

    Hi, sebkaine. For the first question, I suggest you to use attribwrangle, because it can run only once(detail). In houdini13, wrangle has became really powerful. So, you can do almost everything related in geometry with wrangle(vex). But if you want over that, most of times there is only one options which is python. Python is more flexible, and can be applied overall area. I used it for create my own interface or modify dops.
  23. With some Python scripts, I can get list of objects in a group. I guess there is an expression way. But I can't find it. If you know this, please tell me. Thank you.
  24. Yay, I found it. dopobjectlist($DOPNET, "groupname", 0) # or 1 if you want object name [/CODE] And python version. [CODE] sim = hou.pwd().simulation() grp = sim.findRelationship("groupname") recs = grp.records("ObjInGroup") objs = [str(r.field("objid")) for r in recs] # or "objname" return " ".join(objs) [/CODE] If there is shorter version there, please let me know!
  25. Delete DOP object with python

    I get it. Thank you graham. Here is another question. What is different between SIM_Object and SIM_Data? Because you converted it from object to data. I roughly guessing that it is same (almost?). Is it true?