Help Controlling specific particle force / custom constraints. - Printable Version +- Obi Official Forum (https://obi.virtualmethodstudio.com/forum) +-- Forum: Obi Users Category (https://obi.virtualmethodstudio.com/forum/forum-1.html) +--- Forum: Obi Rope (https://obi.virtualmethodstudio.com/forum/forum-4.html) +--- Thread: Help Controlling specific particle force / custom constraints. (/thread-2885.html) Pages:
1
2
|
Controlling specific particle force / custom constraints. - rastleks - 22-04-2021 Hello. I want to create the 3D Snake character. The closest example is the game Snake Pass player character. https://www.youtube.com/watch?v=7ZwiRoA-kns I thinking about using Obi Rope as the tools to create Snake character and want to ask if it's a good way to solve this problem. Particular questions that bother me: 1. Can particles be controlled by me directly? 2. Can custom constraints be added? 3. Can parameters of an actor be tweaked at runtime? I didn't buy obi rope still, so i want to decide if this asset can help me and then buy it. Gladly accept any advices or opinions on where it is a good idea to use obi rope in this case or not. Thank you. RE: Controlling specific particle force / custom constraints. - josemendez - 22-04-2021 1.- Yes. You can get/set any particle property at runtime (positions, velocities, mass, etc). See: http://obi.virtualmethodstudio.com/tutorials/scriptingparticles.html 2.- Yes, but only on the velocity level. There's no API to create custom position-based constraints as of now. You can only add/remove constraints of the existing types. 3.- Yes, all actor/solver parameters can be changed at runtime. You can even generate actors programmatically: http://obi.virtualmethodstudio.com/tutorials/scriptingactors.html Obi is a quite large and complex engine. Before buying, I'd recommend taking a look at the manual and the FAQ: http://obi.virtualmethodstudio.com/tutorials/ http://obi.virtualmethodstudio.com/faq.html Let me know if I can answer any more questions. cheers! RE: Controlling specific particle force / custom constraints. - rastleks - 22-04-2021 (22-04-2021, 11:47 AM)josemendez Wrote: 1.- Yes. You can get/set any particle property at runtime (positions, velocities, mass, etc). See: http://obi.virtualmethodstudio.com/tutorials/scriptingparticles.html Thank you for your reply! How you think, is it a good idea to use Obi Rope to create Snake Pass like character? I think it can be problems with something like muscles, because Snake is something between rod and rope, because it can try to keep shape, but despite rod - any shape. Maybe I'm wrong and all these problems can be solved using Obi Rope? RE: Controlling specific particle force / custom constraints. - josemendez - 22-04-2021 (22-04-2021, 11:52 AM)rastleks Wrote: Thank you for your reply! Judging from the videos, you could use a rod to do this. Note that rods do not have to be rigid. You can control their bending, twisting, shearing stiffness and plasticity. Think of them as a "more powerful" rope, however they can also behave like rope. The "snake-like" behavior in the video probably comes from imposing a custom constraint on particles: they have to follow the path of the previous particle in the body, up to some percentage. At 0% they behave freely, like a rope. At 100%, they follow the exact path taken by the snake's head. You can implement this by adjusting particle velocities. RE: Controlling specific particle force / custom constraints. - rastleks - 22-04-2021 (22-04-2021, 12:00 PM)josemendez Wrote: Judging from the videos, you could use a rod to do this. Note that rods do not have to be rigid. You can control their bending, twisting, shearing stiffness and plasticity. Think of them as a "more powerful" rope, however they can also behave like rope. Thank you very much. Documentation says that Rods can't change length in runtime. But as we all know, any snake want to eat something and grow larger May be there is some way to implement this using Rod? RE: Controlling specific particle force / custom constraints. - josemendez - 22-04-2021 (22-04-2021, 12:23 PM)rastleks Wrote: Thank you very much. Unfortunately not :/. Rods can't change their length, because unlike ropes they contain a special constraint that encompasses all particles in it. Changing the length would be too costly. RE: Controlling specific particle force / custom constraints. - rastleks - 22-04-2021 (22-04-2021, 12:27 PM)josemendez Wrote: Unfortunately not :/. Rods can't change their length, because unlike ropes they contain a special constraint that encompasses all particles in it. Changing the length would be too costly. Thank you very much for your answers! RE: Controlling specific particle force / custom constraints. - josemendez - 22-04-2021 You're welcome RE: Controlling specific particle force / custom constraints. - josemendez - 22-04-2021 Hi! Got my curiosity piqued, so I implemented the basic mechanics of the game using Obi. Will post a video and some code tomorrow. cheers! RE: Controlling specific particle force / custom constraints. - josemendez - 23-04-2021 Here's my version of it using ropes (instead of rods). Haven't played Snake Pass though, only seen videos, so I'm not sure if this mimics the gameplay feel close enough. It's kinda tricky to move around as a snake but I guess that's the challenge You can move the head using WASD, lift up the head using Space, and slither (accelerate) pressing J: Here's the full snake controller code: Code: using UnityEngine; This is the interesting bit: Code: if (Input.GetKey(KeyCode.J)) By moving each particle in the direction of the previous one in the snake's body, the typical slithery-snake movement is achieved. That's all there is to it. Only particles that are in contact with something can slither, though. This is achieved by storing a "traction" value for each particle. Particles in contact with something have a traction of 1, if they're not in contact with anything they have zero traction. If you wanted to I guess you could have different traction values for different terrains and stuff. This will be included as a sample scene in upcoming updates. cheers! |