Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Help  Not Building on iOS and collisions issue
#1
Hi there, I have a problem and a few questions

Problem is that I am using unity 2019.2.2.1f1 and when I build the project for iOS it gets stuck on linking with no errors and stays there forever. You can generate that by downloading the obi into an empty project and build.

Now questions
1 - how to detect collisions, I have tried all the docs and examples. simple fluid renders fine and flows well but I want to get callbacks when it collides with certain objects.
By the way, I have used the example script CollisionEventHandler and also change the phase and thickness but no success. it does not log anything. 
There should be a video tutorial!!!
plus is there any possibility if it works finger crossed to use the triggers.

2 - How to set a separate layer for the fluid particles which can be used to enable disable collision with certain layers.

Please help and I'll update my review on the store.
Reply
#2
(02-05-2020, 04:28 PM)Rohaan081622 Wrote: Hi there, I have a problem and a few questions

Problem is that I am using unity 2019.2.2.1f1 and when I build the project for iOS it gets stuck on linking with no errors and stays there forever. You can generate that by downloading the obi into an empty project and build.

Now questions
1 - how to detect collisions, I have tried all the docs and examples. simple fluid renders fine and flows well but I want to get callbacks when it collides with certain objects.
By the way, I have used the example script CollisionEventHandler and also change the phase and thickness but no success. it does not log anything. 
There should be a video tutorial!!!
plus is there any possibility if it works finger crossed to use the triggers.

2 - How to set a separate layer for the fluid particles which can be used to enable disable collision with certain layers.

Please help and I'll update my review on the store.

Hi,

XCode 11.4 currently has a bug that causes the linker to hang, see: http://obi.virtualmethodstudio.com/forum...p?tid=2124. We've reported the bug to Apple.
For now, the only workaround is to use XCode 11.3 or 11.3.1 with Obi 5.1. Drop us a line at support(at)virtualmethodstudio.com if you need any previous version.

1.- There's a manual page on collisions:
http://obi.virtualmethodstudio.com/tutor...sions.html

And a full page on collision callbacks:
http://obi.virtualmethodstudio.com/tutor...sions.html

There's also video tutorial for basic collision setup in our official channel:
https://www.youtube.com/watch?v=4i177iXR23o

Triggers work fine with collision callbacks: they will still generate contacts against particles, but the contacts won't have any physical effect.

The CollisionEventHandler will simply draw contacts using gizmos. It won’t log anything to the console.

2.- If you've read the manual page for collisions, you know that Obi does not use layers to filter collisions, instead it uses phases. You can set the phase for particles emitted by a certain emitter in its inspector, see: http://obi.virtualmethodstudio.com/tutor...tters.html

Let us know if we can be of further help. cheers!
Reply
#3
(02-05-2020, 10:13 PM)josemendez Wrote: Hi,

XCode 11.4 currently has a bug that causes the linker to hang, see: http://obi.virtualmethodstudio.com/forum...p?tid=2124. We've reported the bug to Apple.
For now, the only workaround is to use XCode 11.3 or 11.3.1 with Obi 5.1. Drop us a line at support(at)virtualmethodstudio.com if you need any previous version.

1.- There's a manual page on collisions:
http://obi.virtualmethodstudio.com/tutor...sions.html

And a full page on collision callbacks:
http://obi.virtualmethodstudio.com/tutor...sions.html

There's also video tutorial for basic collision setup in our official channel:
https://www.youtube.com/watch?v=4i177iXR23o

Triggers work fine with collision callbacks: they will still generate contacts against particles, but the contacts won't have any physical effect.

The CollisionEventHandler will simply draw contacts using gizmos. It won’t log anything to the console.

2.- If you've read the manual page for collisions, you know that Obi does not use layers to filter collisions, instead it uses phases. You can set the phase for particles emitted by a certain emitter in its inspector, see: http://obi.virtualmethodstudio.com/tutor...tters.html

Let us know if we can be of further help. cheers!



I have downgraded xcode to 11.3 and now the invalid bitcode issue. Searched everywhere for solution but there is none.
I have watched your tutorials and followed collision callbacks. Its not Logging anything and i can't do anything until this get sorted. 

You have worked really hard and its a really great asset but you need to do a step by step tutorial to make it perfect because its takes days to figure out. Not happy
Reply
#4
Quote:I have downgraded xcode to 11.3 and now the invalid bitcode issue. Searched everywhere for solution but there is none.

Quoting myself in the previous post:
"For now, the only workaround is to use XCode 11.3 or 11.3.1 with Obi 5.1. Drop us a line at support(at)virtualmethodstudio.com if you need any previous version."

As you'd already know, iOS bitcode versions are not backwards compatible. To build with 11.3 you need Obi 5.1. Write to support(at)virtualmethodstudio.com and I'll send it to you.

Quote:I have watched your tutorials and followed collision callbacks. Its not Logging anything and i can't do anything until this get sorted.

What do you mean by "logging"? Collisions, with or without callbacks, will not log anything to the console by default (unless you log some info yourself within the callback). I don't understand what you mean. Maybe if you actually explain what you want to achieve, I'll be able to help you. Do you want to trigger a function upon collision with a certain collider? Do you want to count collisions, or something similar? What have you tried so far? Can you share your callback functions, and the code you used to subscribe to the collision events?

Quote:You have worked really hard and its a really great asset but you need to do a step by step tutorial to make it perfect because its takes days to figure out. Not happy

For simulation:
- Create a ObiEmitter and assign a fluid blueprint.
- Add a ObiCollider component to any object you want to collide with the fluid.

For rendering:
- Add a ObiFluidRenderer to the camera(s) you want to render from, with the materials you want to use.
- Assign the particle renderers to the fluid renderer, making sure its "render" checkbox is disabled (to render the fluid surface only, not the particles)

Not much else to do. From that point on it's all parameter-tweaking until you get the results you need. For a subject as complex as fluid simulation (that usually requires quite deep knowledge both about physics and rendering) I'd say setup is rather simple. What are you having problems with? In your opinon is there any part of the manual that would need to improve?
Reply
#5
(03-05-2020, 05:24 PM)josemendez Wrote: Quoting myself in the previous post:
"For now, the only workaround is to use XCode 11.3 or 11.3.1 with Obi 5.1. Drop us a line at support(at)virtualmethodstudio.com if you need any previous version."

As you'd already know, iOS bitcode versions are not backwards compatible. To build with 11.3 you need Obi 5.1. Write to support(at)virtualmethodstudio.com and I'll send it to you.


What do you mean by "logging"? Collisions, with or without callbacks, will not log anything to the console by default (unless you log some info yourself within the callback). I don't understand what you mean. Maybe if you actually explain what you want to achieve, I'll be able to help you. Do you want to trigger a function upon collision with a certain collider? Do you want to count collisions, or something similar? What have you tried so far? Can you share your callback functions, and the code you used to subscribe to the collision events?


For simulation:
- Create a ObiEmitter and assign a fluid blueprint.
- Add a ObiCollider component to any object you want to collide with the fluid.

For rendering:
- Add a ObiFluidRenderer to the camera(s) you want to render from, with the materials you want to use.
- Assign the particle renderers to the fluid renderer, making sure its "render" checkbox is disabled (to render the fluid surface only, not the particles)

Not much else to do. From that point on it's all parameter-tweaking until you get the results you need. For a subject as complex as fluid simulation (that usually requires quite deep knowledge both about physics and rendering) I'd say setup is rather simple. What are you having problems with? In your opinon is there any part of the manual that would need to improve?


Hi, Thank you so much for being so responsive. let me tell you what i am trying to achieve. First i want to know the particle location in the scene which i was trying to achieve by using a plane with obi collider and using the collider callback to just simply log a message about the collision on to the  console using debug.Log which is not doing anything. I have got the water working and every thing is perfect and i appreciate your work. Second i am trying to use unity particles  to create some bubbles in the water and they don't show where the water is if you could help me with that please. 

Basically i want to know if something is inside the water and not outside if you could please help me. The whole project is stuck there. 
I'll send an email to to get the older version of obi as well. Thank for that. 
Reply
#6
Hi,

I just answered your email and sent 5.1 to you.

Can you share more info about how have you set this up? what does your code look like? Getting collision callbacks should be pretty straightforward.
Setting up a plane collider, subscribing to the solver's OnCollision event and calling Debug.Log() from it works fine for us. Here's the code we used:

Code:
using UnityEngine;
using Obi;

[RequireComponent(typeof(ObiSolver))]
public class CollisionLogger : MonoBehaviour {

    ObiSolver solver;

    void Awake(){
        solver = GetComponent<Obi.ObiSolver>();
    }

    void OnEnable () {
        solver.OnCollision += Solver_OnCollision;
    }

    void OnDisable(){
        solver.OnCollision -= Solver_OnCollision;
    }
    
    void Solver_OnCollision (object sender, Obi.ObiSolver.ObiCollisionEventArgs e)
    {
       Debug.Log("collisions!");
    }

}

And the results:

[Image: Mj6lgPp.png]

The CollisionEventHandler sample code works fine too, but you need to have Gizmos enabled to be able to see the contacts it draws:

[Image: fR3U7B5.png]

Regarding bubbles, what have you tried? placing a regular particle emitter with a particle advocator component should do it (see http://obi.virtualmethodstudio.com/tutor...ction.html). There's also a couple sample scenes that use advection (FluidFoam and FluidKarmanVortex)
Reply
#7
(05-05-2020, 08:24 AM)josemendez Wrote: Hi,

I just answered your email and sent 5.1 to you.

Can you share more info about how have you set this up? what does your code look like? Getting collision callbacks should be pretty straightforward.
Setting up a plane collider, subscribing to the solver's OnCollision event and calling Debug.Log() from it works fine for us. Here's the code we used:

Code:
using UnityEngine;
using Obi;

[RequireComponent(typeof(ObiSolver))]
public class CollisionLogger : MonoBehaviour {

    ObiSolver solver;

    void Awake(){
        solver = GetComponent<Obi.ObiSolver>();
    }

    void OnEnable () {
        solver.OnCollision += Solver_OnCollision;
    }

    void OnDisable(){
        solver.OnCollision -= Solver_OnCollision;
    }
    
    void Solver_OnCollision (object sender, Obi.ObiSolver.ObiCollisionEventArgs e)
    {
       Debug.Log("collisions!");
    }

}

And the results:

[Image: Mj6lgPp.png]

The CollisionEventHandler sample code works fine too, but you need to have Gizmos enabled to be able to see the contacts it draws:

[Image: fR3U7B5.png]

Hi while you here. Could you please tell me about the unity particles. Why they don't show where the water is . i am using simple water.
Reply
#8
(05-05-2020, 08:27 AM)Rohaan081622 Wrote: Hi while you here. Could you please tell me about the unity particles. Why they don't show where the water is . i am using simple water.

Can you share your setup for this? I can't do much to help if I don't know what you current setup looks like.
Reply
#9
Shooting in the dark here, but could it be that you've set up Unity's emitter to simulate in local space instead of world space? that way if you rotate or move the emitter, particles will rotate/move with it which is probably not what you want. Here's my setup for the SimpleFluid sample scene:

[Image: ljYB6Ak.png]
Reply
#10
(05-05-2020, 08:39 AM)josemendez Wrote: Shooting in the dark here, but could it be that you've set up Unity's emitter to simulate in local space instead of world space? that way if you rotate or move the emitter, particles will rotate/move with it which is probably not what you want. Here's my setup for the SimpleFluid sample scene:

[Image: ljYB6Ak.png]

Thank you for your help but i have another problem now apart from these. The simple2dshader is not there in the 5.1 and ive tried to put them in from the newer version and it has an error. See the picture below. In terms of particles, i am working on a 3d project but for mobile i've been using simple2dwater. and the particle system does not show. I can screen share if you want but cant show the picture here as i am bound by the agreement. sorry


Attached Files Thumbnail(s)
   
Reply