sebastian.vesenmayer Posted October 28, 2019 Share Posted October 28, 2019 (edited) Hello, we are starting a particle system on two different computers which have synchronized positions of the emitter with timestamps. How can we make sure that all emitted particles get the same position/orientation/contact points with colliding objects, because we are observing different values for them? Is there a seed which can be set to get the same results on both machines? Thanks, Sebastian Edited October 28, 2019 by sebastian.vesenmayer Link to comment
silent Posted October 28, 2019 Share Posted October 28, 2019 Hi Sebastian, I believe you can use setSeed() for that: https://developer.unigine.com/en/docs/2.9/api/library/objects/class.objectparticles#setSeed_uint_void How to submit a good bug report --- FTP server for test scenes and user uploads: ftp://files.unigine.com user: upload password: 6xYkd6vLYWjpW6SN Link to comment
sebastian.vesenmayer Posted November 4, 2019 Author Share Posted November 4, 2019 Thanks, we did set the same seed for the particle systems, spawning looks good at the beginning but the particles get fast out of sync then. Are there any other settings we have to manage? Regards, Sebastian Link to comment
silent Posted November 5, 2019 Share Posted November 5, 2019 Right now particles sync solution works with short duration effects (like explosions). Long duration simulations may cause desynchronization. Unfortunately, we didn't find a proper solution for that task yet. You can improve this behavior by force updating of particles nodes (so it would continue simulation outside of the viewing frustum). Could you please tell us what kind of real-world effect you are currently trying to simulate? How to submit a good bug report --- FTP server for test scenes and user uploads: ftp://files.unigine.com user: upload password: 6xYkd6vLYWjpW6SN Link to comment
binstream Posted November 5, 2019 Share Posted November 5, 2019 We are improving particle systems now (control by splines, etc.) and we'll see if this can be improved now. Link to comment
sebastian.vesenmayer Posted November 5, 2019 Author Share Posted November 5, 2019 3 hours ago, silent said: Right now particles sync solution works with short duration effects (like explosions). Long duration simulations may cause desynchronization. Unfortunately, we didn't find a proper solution for that task yet. You can improve this behavior by force updating of particles nodes (so it would continue simulation outside of the viewing frustum). Could you please tell us what kind of real-world effect you are currently trying to simulate? We try to synchronize different type of water/smoke jets and big smoke clouds, which have a longer lifetime. We observe desynchronization while Emitter position and orientation is not changing and all particles are in viewing frustum. By the way, how can we force updating of particle nodes outside of the view frustum? Thank you. Link to comment
silent Posted November 5, 2019 Share Posted November 5, 2019 You can call World::addUpdateNode() and add your nodes with particles to the always update list. As Denis mentioned before right now we are working on a more reliable solution that will cover most of the particles synchronization issues. How to submit a good bug report --- FTP server for test scenes and user uploads: ftp://files.unigine.com user: upload password: 6xYkd6vLYWjpW6SN Link to comment
ulf.schroeter Posted November 6, 2019 Share Posted November 6, 2019 just some old ideas Link to comment
sebastian.vesenmayer Posted April 7, 2020 Author Share Posted April 7, 2020 Hello Unigine, are there any updates on this? I have read it has been refactored in 2.10 but I have not found any api to get those results. Thanks On 12/25/2019 at 6:15 PM, fox said: Particle Systems Update Refactored Particle Systems have got more deterministic behavior significantly improving image consistency for multi-channel rendering use cases. So, when a particle is spawned on one IG/PC, it can travel to another screen (a view from another IG/PC) seamlessly, which is very important for multi-channel image generators. More Rendering Improvements Link to comment
morbid Posted April 7, 2020 Share Posted April 7, 2020 Hello, In 2.10 we added 3 new API methods for particles synchronization: setSyncMode takeSyncData applySyncData To save particles you need to set mode to MASTER, then take the data. To restore their state you need to set mode to SLAVE, then use applySyncData. Have you tried this? Thanks! How to submit a good bug report --- FTP server for test scenes and user uploads: ftp://files.unigine.com user: upload password: 6xYkd6vLYWjpW6SN Link to comment
sebastian.vesenmayer Posted April 7, 2020 Author Share Posted April 7, 2020 Ok this means we have to use syncker? Link to comment
morbid Posted April 7, 2020 Share Posted April 7, 2020 Nope, it's just naming. These methods were added mainly because of Syncker, but you can use them freely without this plugin. How to submit a good bug report --- FTP server for test scenes and user uploads: ftp://files.unigine.com user: upload password: 6xYkd6vLYWjpW6SN Link to comment
sebastian.vesenmayer Posted April 7, 2020 Author Share Posted April 7, 2020 Ah I see, so I have to use a network socket to distribute the data? Link to comment
morbid Posted April 7, 2020 Share Posted April 7, 2020 Sorry, I wasn't clear enough. You'll need a network in any case. This could be: Syncker, Unigine Sockets, system sockets, or 3rd-party networking library. How to submit a good bug report --- FTP server for test scenes and user uploads: ftp://files.unigine.com user: upload password: 6xYkd6vLYWjpW6SN Link to comment
sebastian.vesenmayer Posted April 7, 2020 Author Share Posted April 7, 2020 Thanks for confirmation :) 1 Link to comment
sebastian.vesenmayer Posted April 20, 2020 Author Share Posted April 20, 2020 I have more questions: 1. Is there any information which states gets synchronized when taking and applying data? 2. Is emitter enabled/disabled one that gets synchronized? Link to comment
morbid Posted April 20, 2020 Share Posted April 20, 2020 Hi, 2 hours ago, sebastian.vesenmayer said: 1. Is there any information which states gets synchronized when taking and applying data? These methods synchronize particles only. When you're taking the data you get position, velocity, angle, radius, grow, life, texcoord and number of hidden parameters that we need to synchronize each particle. Emitter is not taken into account. 2 hours ago, sebastian.vesenmayer said: 2. Is emitter enabled/disabled one that gets synchronized? Emitter is ignored with takeSyncData. If you wanted to disable other emitter with applySyncData it wouldn't work. Thanks. How to submit a good bug report --- FTP server for test scenes and user uploads: ftp://files.unigine.com user: upload password: 6xYkd6vLYWjpW6SN Link to comment
sebastian.vesenmayer Posted April 20, 2020 Author Share Posted April 20, 2020 Thank you. Link to comment
sascha.schneider Posted April 21, 2020 Share Posted April 21, 2020 On 11/5/2019 at 5:47 AM, binstream said: We are improving particle systems now (control by splines, etc.) and we'll see if this can be improved now. Hi, Is there already an update for this? Has the idea been rejected or is it still being pursued? Thanks, Sascha Link to comment
binstream Posted April 21, 2020 Share Posted April 21, 2020 Working on it for the 2.12 release, looks good so far. Was not ready for 2.11 though. Link to comment
sascha.schneider Posted April 22, 2020 Share Posted April 22, 2020 15 hours ago, binstream said: Working on it for the 2.12 release, looks good so far. Was not ready for 2.11 though. Thank you, for the update - hope to see it soon. 1 Link to comment
Recommended Posts