thank you making amazing video! Your video scratched my itch!
@nonjabuiznzsАй бұрын
really helpful, thank you!
@TechHamlinАй бұрын
Your content is so good and Thorough! I love your content! Mega thumbs up :-)
@LucasRodrigues-nu5qdАй бұрын
thank you!
@MakcoHuoАй бұрын
Hello my friend. I have Houdini 20.5 and python 3.11.7. Thats my settings { "python.autoComplete.extraPaths": [ "C:\\Program Files\\Side Effects Software\\Houdini 20.5.278\\houdini\\python3.11libs" ], "python.defaultInterpreterPath": "C:\\Users\\Ghost\\AppData\\Local\\Programs\\Python\\Python311\\python.exe" , "json.schemas": [ ], "window.zoomLevel": 1.5, } Unfortunately it doesn't work( Do you now why?
@vojislavpavkovs9124Ай бұрын
Thanx! really helpful when we try to figure out stuff we know how to do properly in other apps.
@henrythejeditubeАй бұрын
Thank you so much
@MaartenNielen-q3jАй бұрын
Thanks for making the video. I had question how do you get the Autocompletion?
@brundlethwaiteАй бұрын
If the auto completion is not working properly you can try opening a python scripting window and re-importing a library there. That usually fixes auto-completion not registering in the type properties. For the default Houdini library the import would be "import hou".
@MaartenNielen-q3jАй бұрын
awesome stuff
@printrun5Ай бұрын
Was watching your tutorial. Do you know how to make it working for Houdini 20.5? It comes with python 3.11. PySide 2 doesn’t work with Python 3.11, and when I installed PySide6, autocompletion doesn’t work. Even “import hou” doesn’t work 😕 Getting desperate.
@brundlethwaiteАй бұрын
This is the exact setup that I am currently using. I keep the Python version separate so my Python install is still 3.10.11. Houdini 2.5.3864 still uses pyside2 for the python panels. Have you added the Python install to your PYTHONPATH or the user's path environment variable in windows? What error is VScode giving you? I will also probably need to see your VS settings files.
@printrun5Ай бұрын
@@brundlethwaite SO I was able to get it running with python 3.11, but autocomplete works, and doesnt work. For example, when I type “import hou” , that gives me autocomplete, then I continue with “node = hou.pwd()”, that gives me autocomplete, but when I go “geo = node.xxx” autocomplete after “node” doesn’t work :-/ . Any ideas? Btw I have set up everything as you do. Except that I have PySide6 instead of PySide2.
@LucasRodrigues-nu5qdАй бұрын
The VS code wasn't finding "hou" module for me too, what fixed for me was manually typing: "python.analysis.extraPaths": [ "C:\\Program Files\\Side Effects Software\\Houdini 20.0.653\\houdini\\python3.10libs" ] make sure your houdini version is the same as the "python.autoComplete.extraPaths"
@olleeliasson8336Ай бұрын
@@LucasRodrigues-nu5qd cheers, you saved me!
@maksimfilipovich2 ай бұрын
amazing, thanks
@BananaPeelStudio0002 ай бұрын
what about the add as in between shapes do you know how to use it ? the documentation is a bit obscure
@brundlethwaite2 ай бұрын
That is really just using an extra shape. So instead of using a start and end shape you create extra shapes that occur between the blend. So instead of A <-> B you have A <-> B <-> C.
@tinyredkite2 ай бұрын
Thank you so much for this video! It's quite unbelievable that you are the only one who explained the process in details!
@Voodoo-b4f3 ай бұрын
Great, thanks a lot. I have one question regarding code completion if you use the default interpreter form Houdini (hython.exe). How can I get the code completion in that case? I just can't get it to run in VSCode. I tried all directories that make sense inside the settings.json. Maybe you have an idea? Here is my autoComplete.extraPaths: "python.autoComplete.extraPaths": [ "C:/Program Files/Side Effects Software/Houdini 20.5.278/python311/lib/site-packages-forced/shiboken2", "C:/Program Files/Side Effects Software/Houdini 20.5.278/python311/lib/site-packages-forced/PySide2", "C:/Program Files/Side Effects Software/Houdini 20.5.278/python311/lib/site-packages-forced", "C:/Program Files/Side Effects Software/Houdini 20.5.278/python311/lib/site-packages", "C:/Program Files/Side Effects Software/Houdini 20.5.278/houdini/python3.11libs" ] Cheers
@Voodoo-b4f3 ай бұрын
"hou" auto complete works.. just the PySide2 not.
@khiemsola3 ай бұрын
thank you, helps improve my tool creation
@Igrom_Gamedev4 ай бұрын
Super info!
@altreebrause33544 ай бұрын
Thank you, this is very helpful indeed! I have a question though. I can't really get to work this in my case. On a wrangle I created an ordered menu. the Menu Python Script looks like that: ------------------------------ node = kwargs.get('node') names = [] geo = node.geometry() wall_IDs = geo.stringListAttribValue("wall_ids") for id in wall_IDs: names.append(id) names.append(id) return names -------------------------------- following your example, in this case I read from a detail string array called "wall_ids" and the menu gets created as expected. All items from the string array appear in the drop down menu. But when I try to simply access the chosen string value from the created parm with something like : --------------------------------------- s@wall_id = chs("parm"); --------------------------------------- I get a -1 as a value instead of the actual string value. Am I missing something here? I would really appreciate advice here!
@TomCushwa4 ай бұрын
This is a spectacular presentation of matrix deformations! Neo would be proud! Excellent stuff
@yunusemreklnc53214 ай бұрын
@prashantcgi5 ай бұрын
Hi thanks for the video it really helped, i have a question for me the autocomplete wont work when i create object of class, it work when i do hou. but it wont work in this situation import hou obj = hou.node("/obj"). # Works here geo = obj.createNode("geo", "mygeo") # dont work here is it same for you? thanks for the video :)
@brundlethwaite5 ай бұрын
Unfortunately that is a limitation of the python code completion. I have not tried other LSPs but the default python setup in VSCode will only give completion when referencing libraries directly.
@prashantcgi4 ай бұрын
@@brundlethwaite Thanks for the reply, in case you find something on this please do let me know
@vojislavpavkovs91245 ай бұрын
You are one of the best Houdini tutors out there. I really like your rigging APEX and KineFX tutorials. Please keep what you doing sir! :)
@vojislavpavkovs91245 ай бұрын
This is so good! it gives a lot of clarity not only for kineFX but in rigging in general. Really appreciate it!
@nicolaastanghe4756 ай бұрын
This doesn`t seem to work on linux. i wonder why.
@whdinasor6 ай бұрын
Thank you!!!
@abhishek.vermaaa6 ай бұрын
I recently bought your Kinefx Humanoid course from Udemy and that was the purchase of my life, your content is amazing and on the point!
@jzbrothersurgut6 ай бұрын
A wonderful lesson can I ask you how to implement the work of capturing a curve in APEX, like there are a lot of bones around the mouth, but in order not to control each bone from the sets, I make a nurbs curve and use RIGVOP to control the entire curve around the mouth, but I have only a few control points how to transfer control to APEX I do not know or tried to do something similar with wiredeform, but I also don't know how to make friends with APEX
@taohong23327 ай бұрын
@playboy83037 ай бұрын
man please explain in simple way.......
@DevGods7 ай бұрын
What are the reasons you continue with Unity over Godot or Unreal Engine?
@brundlethwaite7 ай бұрын
Ideally this will be running on the Frimble engine but I do not know If it will ever get that far. This is a prototype so it may never be released other considerations are. - My interest here is animation and Rigging not programming or releasing a game Unity is the easiest to deal with at the moment. - Unity is easy to use, I know it and it is the most fun to work with at the moment. - As this is a prototype Unity is free. - Unreal would be far more expensive than Unity (even if they had implemented that stupid pricing scheme). - If I release the game It would be for consoles Godot has no support and would end up being more expensive than Unity. - Godot does not have Houdini Engine support. - Flax does not support graphics tablets. - Flax does not have native Houdini engine support. - Cryengine does not have proper UI and requires defunct commercial software. - Cryengine does not have native Houdini engine support. - Programming in Unreal is horrible and is it weakest area. - For game logic I do not want to use blueprints as they and not efficient and have worse performance that C++. - I do not want to use C++ I would prefer to work with C, Odin or C#. - Animation is Unreal's weakest area Unity is far easier to work with here. - Animation import and Export it Unreal's weakest area. - Unreal's coordinate... - Unreal's syntax..... ... ... This is a little brief, I start to give some more reasons but I do not want this to become a long list and I do not have the time to go into even the basic reasons as each of them require context and explanation to make sense.
@DevGods7 ай бұрын
@@brundlethwaite no way! Unreals animation is weaker than unity’s? I spent sometime with Unity and hated C++ until I started using it and now I look at c# as a jumbled mess lol. I do like Unity’s DOTS I almost switch back to it because of that alone.
@brundlethwaite7 ай бұрын
"no way! Unreals animation is weaker than unity’s?" What relevance does this have? I did not make a feature comparison? This is not a reason or advice on choosing. And it is not relevant to anybody by me, for this specific project. " I spent sometime with Unity and hated C++ until I started using it and now I look at c# as a jumbled mess lol." What relevance does this have? This is not a programming language comparison? These are really bullet points as they applies to this specific project. I am not going to spend days (or for this topic months and years) of my life trying to explain the specifics. You asked me why I am working with Unity you did not ask me why someone else should.
@DevGods7 ай бұрын
@@brundlethwaite From your first reply "- Animation is Unreal's weakest area Unity is far easier to work with here." I was replying to this. Maybe you worded this wrong? From your first reply "- I do not want to use C++ I would prefer to work with C, Odin or C#. " I was replying to this point. I used to prefer c# now I look at it different after using C++ My question initially was to see whats stopping you from converting to UE. I presented some slight counter arguments to push you towards it. Since your content + Unreal would be beneficial to me. No disrespect to you or unity was intended
@brundlethwaite7 ай бұрын
"My question initially was to see whats stopping you from converting to UE." You did not state that. You said "What are the reasons you continue with Unity over Godot or Unreal Engine?" which is a completely different question. I am not converting from anything I currently have projects in Unreal, Unigen, Flax, Godot, Cocos2D and Stride and Cryengine. Not all of the projects are fully active but I none are discarded. So if you had asked the first me about converting I would have said that I am using Unreal different projects instead of why I am using Unity in this one. You also chose to ignore the final statement where I said that each of the points was highly contextual. As well as the first statement.
@tekanobob7 ай бұрын
superb. bonecapture regions were confusing
@Terry_Williams8 ай бұрын
Excellent video, thanks.
@DevGods8 ай бұрын
Thanks for this. This helped me get to the bottom of my issue!
@talesofthedeparted8 ай бұрын
Good to hear. The group and point number issues took me a while to figure out and they can be tricky.
@DevGods8 ай бұрын
I'm trying to follow this in H20 using a mesh that has existing blendshapes. I have copies of that mesh that have different body shapes but when I view my blend shape the mesh explodes
@nictanghe988 ай бұрын
Anny way to do this in a way that the Ik chains don`t go over set limits ?
@brundlethwaite8 ай бұрын
This is limiting the controls not the joints. There is no built in limit to control IK chains (you can make one manually in vex or VOPS). You can force IK chins them to return to an original pose using rest transforms. Using rest transforms will stop you joints from going beyond a straight line as they will always return to the default. I do not think this applies to the IKchains node. As that uses the 2 bone Ik VOP. But if you use the IK Solver VOP you have the rest angles mode.
@nictanghe988 ай бұрын
@@brundlethwaite I`ve switched to apex. I think its to much work to build a costum one as a generalist. so i`ll skip over it for now. THX for the reply !
@GameDevNerd8 ай бұрын
What was the goal? To move the character with a control stick relative to the direction you're currently facing? Like you push up on the stick and he walks forward even if you're looking back at the camera?
@brundlethwaite8 ай бұрын
The character needs to move relative to the camera. So the controller is essentially moving the character in screen space. But the character is not being driven by the controller but is using root motion and is purely driven by the animation. Essentially this is a animation prototype 1st and if I get a good results from that I may turn it into controller prototype. There is also some tool creation that is incidental to the prototypes/
@GameDevNerd8 ай бұрын
@@brundlethwaite ah, I gotcha. Root motion can be tricky but is well worth it in the long run.
@nicolaastanghe4759 ай бұрын
autorig throws Error Invalid source /obj/APEX_2/autorigcomponent1/error_if_no_character_input. (Error: Unable to cook the test input.). in 20.0.649 Error Invalid source /obj/APEX_2/autorigcomponent1/bypass_add_rig. (Error: Unable to cook the test input.). Warning Input must be of type character. Current type: Apex Graph in 20.0.625
@nicolaastanghe4759 ай бұрын
Dive into the subnet and change the port name on the input or output node. Rename ports by MMB clicking the port name.
@rebeccaneuer34089 ай бұрын
can you show us how to do an ik/fk switch ?:)
@Electric8389 ай бұрын
thank you for this tutorial. I havn't done character rigging in houdini before and i think this is really helpful for me.
@jzbrothersurgut9 ай бұрын
Please explain how to set up LookAT for eye control
@fastlearner2929 ай бұрын
Niiice
@Geometrynode9 ай бұрын
Will you please consider doing a facial rigging tutorial for houdini? Besides blendshapes, what is a good method for facial rigging with actual deformers? Can you use this method in this video for a curve based facial rig?
@brundlethwaite9 ай бұрын
There are a series of videos for the prototype for a bone based rigging system on my Patreon. I am working on a full course but editing and recording takes a long time and I have had a lot of interruptions so it is taking a lot longer than I want. Personally I dislike blendshapes as bone based rigs give much better interpolation so will be a bone-based course. Unfortunately it will have to be a paid course. I cannot justify placing it on KZbin for free as it I too much work to do for no compensation when I have a very limited income.
@dilosilv6119 ай бұрын
I don’t understand it. Laying down a lot of nodes just to add one node?
@brundlethwaite9 ай бұрын
When you want to extend a rig using the auto-rigging nodes you will need to create scripts like this this is the starting point for doing that.
@fastlearner2929 ай бұрын
I haven't completed the video yet, but I'm genuinely impressed by your ability to explain even the most smallest details with clarity. Very surprising to see that your videos get so little views, you totally deserve more recognition
@jzbrothersurgut10 ай бұрын
please do the simplest lesson on BlendShape in Apex, from the very beginning and not already on the finished scene, just take a ball and change its geometry by moving the control point, what is so difficult?
@headandshoulders643210 ай бұрын
Great tutorial. But what does that MONOCamera script include? How to access the camera transform?
@brundlethwaite10 ай бұрын
This is not really a tutorial it is more documentation of me screwing around. I setup the MONOcamera in this video: kzbin.info/www/bejne/omOyfYOdibhjqrc Since the camera cannot be accessed by ECS and is a monobehaviour we need to create a hook with a monobehaviour script attached to the camera. This is the script: using System.Collections; using System.Collections.Generic; using UnityEngine; public class MONOCamera : MonoBehaviour { public static UnityEngine.Camera Camera; public void Awake() { Camera = GetComponent<Camera>(); } }
@peterhamlin129610 ай бұрын
great stuff! why are yoy changeging the default transform option to "into this node" in object merge node? I never fully understood that?
@brundlethwaite10 ай бұрын
That is really just habit and does not have that much effect here. The "Into this node" option allows you to use the obj/ level transforms into the sop level. If you have an object containing a mesh and you transform it at the object level and then try to bring it into a separate sop you will not have the obj level transforms affecting the geometry so you will only get the local position not the global position.
@Jayaims00710 ай бұрын
Thanks for your guidance. How might I deal with the flipping of matrix? The following flipEuler method is the closest I got to what I would like from the net. float round(float target; float tens) { target *= tens; target += 0.5; target = floor(target); target /= tens; return target; } float round(float target; int places) { float tens = pow(10.0f, places); return round(target, tens); } vector round(vector target; int places) { float x = round(target.x, places); float y = round(target.y, places); float z = round(target.z, places); return set(x, y, z); } float wrapAngle(float angle) { angle = (angle + 180) % 360 - 180; return angle; } vector wrapAngles(vector v) { v.x = wrapAngle(v.x); v.y = wrapAngle(v.y); v.z = wrapAngle(v.z); return v; } int eulerAxisIndex(string axis) { if (axis == "X") return 0; if (axis == "Y") return 1; if (axis == "Z") return 2; return -1; } vector flipEuler(vector euler; string rotationOrder) { vector ret = radians(euler); string inner_axis = rotationOrder[0]; string outer_axis = rotationOrder[2]; string middle_axis = rotationOrder[1]; ret[eulerAxisIndex(inner_axis)] += M_PI; ret[eulerAxisIndex(outer_axis)] += M_PI; ret[eulerAxisIndex(middle_axis)] *= -1; ret[eulerAxisIndex(middle_axis)] += M_PI; return degrees(ret); } vector fixEuler(vector euler; vector orientation; string rotationOrder) { vector fixedEuler = set(euler.x, euler.y, euler.z); float dotp = dot(radians(orientation), normalize(radians(fixedEuler))); if (dotp < 0) { fixedEuler = flipEuler(fixedEuler, rotationOrder); } return fixedEuler; } matrix localTransform = point(0, "localtransform", i@ptnum); matrix refLocalTransform = point(0, "rest_localtransform", i@ptnum); matrix3 curRotationMatrix = polardecomp(matrix3(localTransform)); matrix3 refRotationMatrix = polardecomp(matrix3(refLocalTransform)); matrix3 offsetMatrix = curRotationMatrix * invert(refRotationMatrix); vector offsetEuler = cracktransform(0, 0, 1, { 0, 0, 0 }, offsetMatrix); vector orientation = cracktransform(0, 0, 1, { 0, 0, 0 }, refRotationMatrix); vector fixedEuler = fixEuler(offsetEuler, orientation, "XYZ"); fixedEuler = wrapAngles(fixedEuler); fixedEuler = round(fixedEuler, 1); if (fixedEuler.x == -180) fixedEuler.x = 0; if (fixedEuler.y == -180) fixedEuler.y = 0; if (fixedEuler.z == -180) fixedEuler.z = 0; v@rotation = fixedEuler;
@talesofthedeparted10 ай бұрын
What solvers are you using that are flipping? I make my transforms manually so that I know they are consistent. So I avoid flipping by always having matrices that do not flip (with the exception of quaternion rotation based spines). This is something that is very difficult to explain without knowing what your scene is doing. But I will try to make a video explaining my approach a cannot give an ETA though.
@Jayaims00710 ай бұрын
@@talesofthedeparted Thanks for the reply. I will be looking forward to your video explain your approach. I have been trying to figure this out ever since your deformation videos. I don't thing I am using any solver. Here is a link to my hip file: drive.google.com/file/d/1Hdvh2Vmc3VXx-fSRN4kuU90WfaLgO3Cx/view?usp=drive_link.
@jzbrothersurgut10 ай бұрын
how to implement Eye Tracking of a target using APEX, please show?