Pipeline Questions and tips

someonesomewhere2

Newbie
Game Developer
May 31, 2022
48
57
So I want to make a game but I’m running into tons of challenges with making characters in Daz and then trying to import the models into Unity. I’m able to do it but there’s a bunch of issues trying to animate the models. For example it’s all over the place when trying to make walk cycles and controls with unity using Daz models.

What I’m wondering is if anyone has any tips for either Daz to Unity or if it would be easier to just use Daz to make the characters and import into Blender for posing, rendering, and making animations. And then just use renpy to make the game.

I was looking originally to make a game with controlable characters and game mechanics using Unity. However, I can also make it as a visual novel. Just trying to figure out the best pipeline. Especially since I can’t really make the characters without Daz at the moment.
 

Saki_Sliz

Well-Known Member
May 3, 2018
1,403
1,011
I was looking originally to make a game with controlable characters and game mechanics using Unity. However, I can also make it as a visual novel.
If this is your first project, then its going to be slow, because you're asking to do a lot when you are still learning the system and developing a 'pipeline.'

I would use the term 'workflow.' When you think of the process as a 'pipeline' you are confusing the concept with the idea that there is a right way, a professionally way, or a way that is standard. Daz to unity while done a lot, is not really standard. simply put, its not easy to use. if it were easy to use, it would be a one click solution. if its too hard to implement in one click, then it would be documented and supported... but its not. So it comes down to skill and technical understanding... which is why I would rather call the process 'workflow' because you get to decide what you are willing to put time into.

Getting into the technical issues:
  • Daz uses tri-axis weights, I'm not super deep into the animation industry, but I've never know a program to use such a method. it seems cool, but takes a lot of skill to take advantage of. If you port to any other program, such as blender, unity, unreal, daz has to convert the weights to normal bone weights.
  • Daz uses dual quaternion deformation, which is common for animations since it does a better job of preserving joint shape. There are much better methods, but DQ is cheap and was given support year and years ago. in blender this would be the 'preserve volume' option on the armature modifier applied to the mesh. Video games however, hardly use this, and use the more simpler linear interpolation approach because it runs much faster, so the results are very distorted animations.
    • there is a git repository that does add DQ to unity... its a personal decision to use this depending on your work flow, as I'll elaborate more about later on.
  • Daz uses a technique called 'corrective shape keys.' simply put, even with dual quaternion deformation, joints still won't look perfect or accurate. So what corrective shape keys are is take a snap shot of a joint at a certain angel (ie daz's knees at 30 and 60 degrees), re-sculpt the joint to look right, and then apply some code that fades in the shape key as the joint gets to the right angle or location (more advance programs use pose space deformation instead, which is really the same thing under the hood, just automated to be more artist friendly).
    • You can technically export all of daz's corrective shape keys into blender. The issue is there to way to transfer all the logic over, the code. So if you want daz accurate models, you have to investigate every joint and corrective shape key, document that the logic seems to be... and you can sort of recreate it in blender using bone angles as drivers... but if you need to make any changes to the model or edits, you basically have to start from scratch, there's no way to preserve the data or transfer anything. Simply, the workflow is so un-optimal this is where I see a lot of devs either say its bs and give up, or they grit their teeth, make sure they find a model/bodytype that they aren't going to change, and push through.
  • If you get corrective shape keys working, you still have to make an animation rig. any animations you make will bake in the corrective shape keys. This is fine if you animate everything yourself. but a lot of the time you want to be able to import other animations, such as from the asset store, other wise you are stuck inventing the wheel. Well you are already fucked if you are using daz figures.
    • 1st issue is that daz for good animation and topology reasons uses an A pose, while video game characters often use a T pose as their resting pose. This means most animations will have an angle offset that will ruin the animation if you rely on unity to auto remap animations. You can technically export animations from unity assets, port them into blender, and then use a much fancier remap program... which again, what was a one click mostly working solution in unity now becomes hard as you have to work under the hood to get the remapper/retargeter to work. it is possible, but I decided this was something so tedious that I never wanted to bother with it for my own workflow.
    • 2nd issue, daz uses a rig that is good for animating, ie limbs are broken up into two bones, ie a bending bone and a twisting bone. you can technically use this in unity... but it's not optimized or slow. not an issue with few characters, but if you want to use unity asset store animations, you have to convert the rig to unity's more simplified humanoid avatar rig for the remapper/retargeter to work, which doesn't have twist bones, so again animations will start to have distortion issues.
    • 3rd even if you got shape keys working, they are only baked into animations, the shape keys can be transferred over to unity... but again, non of the logic does. so any asset store animation will not take advantage of the corrective shape keys, causing another source of distortion in your animation. the solution to this is just make a script to animate this... but I've never found a case where devs actually do this.
  • Don't forget you have to pay for the license(s) to use daz assets and characters in 3D projects.
I've been trying to release an adult game for about 9 years. the more I learn, the higher my standards for myself increase, and the more I understand why such projects don't already exist. As you may be able to guess, it took me most of those years to learn these issues, and a lot of uncompleted projects as a result.

Is there a solution? Yes and no. No because as said, if there was a 'pipeline' or a 'supported method' to use Daz in unity, then there would be support so you wouldn't have to jump though all these hoops. The real solution is developing a 'workflow' which may or may not involve daz. After getting frustrated with so many failed or incomplete project, projects that failed mostly because I learned more and realized I could do things better if I started over again with a clean slate. I did learn a lot, and as a result more of my projects became less about learning and more about developing a process, standards, or habits. These are things you usually learn if you make many small projects and why many encourage that you start with simple projects, because it takes years to learn all the ins and outs. IE if you have a job, you are not considered component until you have 5 year of experience. As I started to have process, I was making more and more progress with projects before dropping them, but having more fun. It was then I remembered, the reason I tried to be such a perfectionist was so that I would focus on learning the 'best way' to do things, so that I would be knowledgeable enough to know what to prioritize. Now that I'm comfortable with art and coding, I switch over to focusing on developing 'my ideal workflow' and make sure projects are fun for me. currently, I am developing my own character assets that solves all the above issues, and adds features I wish other character assets had, and I am able to start with daz characters, have a lot of automated steps I'm coding up, and get something working in unity without too much issue. but its still in development, and would take years to make it usable for others, and I'm only working on this in-between working on other projects, such as programming other peoples games. So yes, there is a solution, you just have to develop the solution that works best for you... a sort of non-answer :)
 

someonesomewhere2

Newbie
Game Developer
May 31, 2022
48
57
Saki_Sliz Wow, thank you so much for breaking down your experience. It's a huge help and I think it gives me the direction I need.


If this is your first project, then its going to be slow, because you're asking to do a lot when you are still learning the system and developing a 'pipeline.'
Since you mention exactly what I already know but have been choosing to ignore, I think I'm gonna go with my first instinct and make the smallest possible project that I can release. I'll probably just render everything in Daz and use RenPy to build out a small scene for a "tech demo" type of thing. I still need to learn both platforms more so this is the smallest footprint I can make and build off of.

I'm still learning animation and 3D in general so trying to swallow the whole elephant was never going to work in the first place. Making something small will help me to learn and establish a workflow.

Daz uses tri-axis weights, I'm not super deep into the animation industry, but I've never know a program to use such a method. it seems cool, but takes a lot of skill to take advantage of. If you port to any other program, such as blender, unity, unreal, daz has to convert the weights to normal bone weights.
Thanks a ton for breaking this down. This gives me a place to start to understand how these models interact with each other. I need to dive deeper into what you're saying since a lot of it went over my head.

have a lot of automated steps I'm coding up, and get something working in unity without too much issue. but its still in development, and would take years to make it usable for others, and I'm only working on this in-between working on other projects, such as programming other peoples games
Also wanted to throw out there that if you ever need help with automating your tools, I might be of use. Only if you want help that is. While I'm still a low-level 3D generalist, I've been writing software for years. That was one of the reasons renpy looked good to me since I have a lot of experience in Python. One way for me to better understand something like 3D animations would be to build tools. Similar to how I learned how Lottie drawing worked. I needed to build the tools that did it so was forced to learn it.

Thanks again for all the information. I appreciate it!
 

Saki_Sliz

Well-Known Member
May 3, 2018
1,403
1,011
Hey glad to help!

I'm still learning animation and 3D in general so trying to swallow the whole elephant was never going to work in the first place.
If it helps, I think I'm a pretty smart person, self taught a lot of things, and everyone loves to stroke my ego :p
when I decided to start doing 3D, I had already seen some videos and I wanted to start from scratch. I had a lot of free time in college and thought, 'I bet if I focused for like a month with 3D, in one month I could go from nothing, to being able to make my own character from scratch.' I may have been able to do it, but it would have been totally amature and half assed. It actually took 3 months redoing different phases of designs (ie identifying good topology practice to make better meshes for animations) and getting familiar with the process before I completed a character that I thought was good enough not to be trash. This is about when I started really focusing on projects, and learning how much time it takes is humbling...

Also wanted to throw out there that if you ever need help with automating your tools, I might be of use. Only if you want help that is. While I'm still a low-level 3D generalist, I've been writing software for years. That was one of the reasons renpy looked good to me since I have a lot of experience in Python. One way for me to better understand something like 3D animations would be to build tools.
In that case, as you play around and become more familiar with the 3D process, you might like Blender because of the scripting. To be honest, I try to avoid blender scripting. Python is amazing (blender has an internal python API you can use), its so powerful and high level... too much for my comfort actually. I really like C# and developing my own mid and high level API's for projects... but as soon as I have to start learning someone else's API it feels a bit daunting for me. Blender is a black box of magic, but this is partly because one doesn't really learn a lot about blender even if they've made a few scripts for it. That's because Daz is like a power tool, like a drill, good at specific tasks, but not all purpose. Blender on the other hand is all purpose... but its like a box of hand tools. Some of these hand tools are pretty niche. You have to know the craft before you can really make use of all the tools. and when you do, it is rather manual (slow going).

I actually want to take you up on the offer, although the script I need to make isn't the most complicated... it still requires that I get started making it. and a lot of the time just starting something is 90% of the effort. I'm guessing that you may still be learning things, such as Blender and the 3D workflow, so worrying about scripting might be jumping in the deep end. You can worry about it later after a project or 2 and feeling you have enough confidence in a project to pull you through the shitty agonizing phase of 'learning' (which is why I hate learning other API's and would rather develop my own, working on something is much more pain free than learning something)

I'm still learning animation and 3D in general so trying to swallow the whole elephant was never going to work in the first place. Making something small will help me to learn and establish a workflow.
While that is probably best... I do not practice what I preach!
I've made games before college, and after entering college I learned about the adult game dev community and was amazed by the community. Since then (7 years ago) I've been trying to make an adult game. But I have high standards for myself. The more I learn, the more I find where I'm lacking and restart to do a better job. Nowadays, I am comfortable with the development process enough that its less about learning, less about skill (although I do wish I had more 2D skill), and more about focusing on myself and my workflow so that I can work on bigger more complex long term projects.

I point this out because I think one of the main reasons I have issues completing projects (and based on what I've read from other devs, industry leaders, etc.) is overthinking the project. the more you look at the project, look at it from a high/top level, the more you wonder what the point of it is. IE, is the game actually that fun? this does a great job of representing what me and various other devs tend to experience, for me, I'm too much in my head. In the video Ray goes down a tony hawk rabbit trail, only to realize there was nothing wrong with the core of his game's design once he saw what his community of players were doing with his game. the youtube channel Extra Credits very much encourage the practice of Fail Faster which is similar. I recently ran into this issue again where I noticed I'm over-designing a project, wondering what the point is... blah. but I'm a bit more experience now to step back, take a break, and start again later, or jump to a different project (I'm helping with 2 other projects other than my own).

If you want to work on simpler projects to learn the development process or tools, that's fine. I'm no great example, I can understand if downsizing a project may make you loose motivation. I always try to go to the limits of my abilities because that's simply what interests me. It is always fun talk about project ideas, and try to work on a project that is interesting (at the risk of thinking your simpler project is pointless). I'm not a writer so I try to avoid ren'py and vn projects, but ren'py is pretty dope if you want to prototype scenes or story ideas. I've also dabble a bit with twine/sugarcube, another engine that is supposed to make it easy to make games, but I found it was just as fun for to prototype ideas with. In fact my current project, aiming for a 3D zombie survival game, is based on a dumb mockup I made in twine. using simpler tools and projects can help figure out the core of a project or idea without getting lost in the details.

anyways, I rambled far to much. Have fun out there and good luck!
 

someonesomewhere2

Newbie
Game Developer
May 31, 2022
48
57
I point this out because I think one of the main reasons I have issues completing projects (and based on what I've read from other devs, industry leaders, etc.) is overthinking the project.
That I completely empathize with. It took me a long time but I learned that shipping is better than shipping something perfect. That was in software but tbh it applies just about everywhere.

Also Saki_Sliz I shipped a small demo of the project I mentioned. I used Daz and Renpy and got a small workflow going. Appreciate the encouragement!