Oliver Markowski 9 Posted February 14, 2017 Hey guys, I guess many of you have seen this: Wrap3 Has anyone got an idea if this is possible with Houdini? If yes I'd be thankful for some pointers. Cheers Oli Share this post Link to post Share on other sites
Atom 1,195 Posted February 14, 2017 I think you could do that with the RAY sop. You may need to resample the source or the target so they have the same number of points. Share this post Link to post Share on other sites
Oliver Markowski 9 Posted February 14, 2017 ray_sop is not able to do that I guess since it only projects points. Wrap3 actually "wraps" a mesh around another mesh. Anyone else? 1 Share this post Link to post Share on other sites
schwungsau 272 Posted February 14, 2017 (edited) point clouds would better then ray sop.... *edit: actually ray-sop and then point cloud look up works best. Edited February 14, 2017 by schwungsau Share this post Link to post Share on other sites
schwungsau 272 Posted February 15, 2017 the only save way would be unfold the geo in one 2d plane (pretty much uv unwrap) for boeth geo and match uppoint wih point clouds radius. to make it in vex it could a little tricky..... i 've never did it in houdini... Share this post Link to post Share on other sites
f1480187 756 Posted February 15, 2017 Seems like an advanced tool for me. I think it's not possible in Houdini, unless you'll write such solver from scratch using basic Houdini tools. You need to know algorithms behind this technology. Ray SOP basically does a raytrace. It is somewhat useful to conform meshes with almost identical shape, but it won't give you advanced results like transforming a base state of modeled hand into a gesture from scan. Same problem with point clouds. 1 Share this post Link to post Share on other sites
petz 428 Posted February 15, 2017 i don´t know this tool but from watching the video i guess that it uses a non-rigid icp algorithm to match one geometry to another. there is no "out of the box solution" you can use in houdini but it isn´t too hard to wire together something that works in a similar way. please take a look at the attached file. it uses some pre-definded points on both geometries to guide the general alignment and deformation. if you want this to work without any user input it might become more tricky but should also be doable ... hth. petz non_rigid_icp.hipnc 13 Share this post Link to post Share on other sites
MrScienceOfficer 53 Posted February 15, 2017 That's beyond cool... Thank you so much for sharing, petz. Share this post Link to post Share on other sites
Igor 2 Posted February 16, 2017 This is very very good File! Thank you Petz. I did not know it is possible with Houdini. Share this post Link to post Share on other sites
Oliver Markowski 9 Posted February 17, 2017 thanks for that file petz! After looking at it I feel like I know nothing about Houdini Need to dig into all the nodes now! Thanks a bunch! What exactly are you doing in CHOPs? Cheers Oli Share this post Link to post Share on other sites
AaronAb 7 Posted February 18, 2017 New point positions based on the reference geo are being interpolated in CHOPS. Here is an example from years ago with similar functionality Share this post Link to post Share on other sites
samuel 1 Posted February 22, 2019 (edited) Hey guys, sorry to ressurect the topic. I'm just new to python and I can't quite understand what's going on in the python node inside 'subnet'. Can anyone help me? =O cheers Edited February 22, 2019 by samuel Share this post Link to post Share on other sites
samuel 1 Posted March 7, 2019 Alright so I just finished to study python (solo learn app ftw) to figure out how the python code works. For those interested: node = hou.pwd() geo = node.geometry() #these came by default with Python SOP, don't change it. nodeTrans = node.node("/obj/geo1/subnet1/objnet1/OUT") #nodeTrans receives the points and its data resulted of the objnet/extractgeo SOP mat = nodeTrans.worldTransform() #mat receives a matrix with the transform data of the points in the world, translate and rotate information matAttrib = geo.findGlobalAttrib("mat") #matAttrib receives the 'detail attribute' data from mat. In the first time in the loop it has zero data, so \/ if not matAttrib: matAttrib = geo.addAttrib(hou.attribType.Global, "mat", mat.asTuple()) #Turns the matrix data of mat in 'detail attribute' as Tuple else: geo.setGlobalAttribValue(matAttrib, mat.asTuple()) #if matAttrib already has something in it, put these values into 'detail attribute' 1 Share this post Link to post Share on other sites