IhabAli Posted May 10, 2020 Share Posted May 10, 2020 (edited) Hello All, I'm trying to achieve the same effect of the attached portal reference video specifically the hair like edges shown in the below screenshot. can achieve the general fluttery movement in a pyro but the core of the "stringy" edges appear to behave like a violent FLIP splash. The closes I got was advercing a POP sim with velocities from a fluttery smoke sim and applying POP fluid and converting the particles back into a fog volume with some velocity noise and velocity motion blur but it just doesn't look nor move right(see stringy.mp4). Any advice or recommendation would be highly appreciated!!! Video Reference for the Effect: effect.mp4 Edited May 18, 2020 by IhabAli Quote Link to comment Share on other sites More sharing options...
Librarian Posted May 11, 2020 Share Posted May 11, 2020 Spherical force and Beam effect ..Found and compiled here with Help of other users (you can find absolutely everything here remember that . You just need to tweak to get the final result.(and export in Compositing program for final touches ) Have fun @IhabAli OdforceStudent.hipnc Quote Link to comment Share on other sites More sharing options...
IhabAli Posted May 11, 2020 Author Share Posted May 11, 2020 Thanks @Librarian. Not sure how the spherical force applies to the stringy fluid like effect in the reference. Perhaps I missed something in the file? The spherical trailing pop sim is very cool looking btw, so thanks for sharing anyway! Quote Link to comment Share on other sites More sharing options...
IhabAli Posted May 14, 2020 Author Share Posted May 14, 2020 (edited) Getting closer to the reference using flip and attribute controlled viscosity. The tentacles in my setup seem a bit bloby, more like liquid than hair. Do you guys think the insane amount of tiny strands like in the reference is a matter of increase the flip resolution? Do you think with the basic dynamics in place the rest of the fine details are shader based? I've attached my setup in case someone is able to improve on it and provide some guidance on how to get more hair like details in the FLIP sim. Appreciate the feedback!! Stringy2.mp4 lavabased.hiplc Edited May 14, 2020 by IhabAli Quote Link to comment Share on other sites More sharing options...
Librarian Posted May 14, 2020 Share Posted May 14, 2020 qLlib asset and Cgwiki ,you can find everything to play with and make that effect . Quote Link to comment Share on other sites More sharing options...
IhabAli Posted May 14, 2020 Author Share Posted May 14, 2020 @Librarian this looks like a simple pop simulation driven with some turbulence source point velocities. Not really related to the video reference I sent. I appreciate your help but I'm looking for a way to achieve the level of complex details while maintaining the fluid like movement of those hair like fluids. Anyone else? Quote Link to comment Share on other sites More sharing options...
Librarian Posted May 14, 2020 Share Posted May 14, 2020 (edited) Sorry it seems that you know what you doing and has some basic skills so please do this combine advect particles by vdb (or volume ) take this example from CG wiki Pyro divergence and sinks in Dops ..and it seems that effect its done with layering 3 different effects so have fun. Edited May 14, 2020 by Librarian Quote Link to comment Share on other sites More sharing options...
IhabAli Posted May 14, 2020 Author Share Posted May 14, 2020 (edited) Thanks @Librarian. Yes 3 layers 2 of which are fairly simple to analyze and implement(the smoke like ring pushing outwards and the red firey "energy" pushing forward). The black streaky hair is what I've been asking about. Advecting particles by VDB is essentially why I decided to go with FLIP just so I don't have to implement things like velocity field smoothing and viscosity from scratch. Basically the "hairs" are behaving like particles driven by a non-divergent velocity field because of the way they fold and swirl around(at least that's what I think). Pyro won't be sufficient on it's own because of natural diffusion that occurs from non-divergent projection in the velocity field and particles would be the way to maintain details. I understand all of that and my conclusion was just to use flip because it's basically a combination of POPs and Pyro. I've posted my simple implementation of a customized FLIP solver to show how I was approaching this effect but I'm struggling with the LOD. I'm specifically looking for techniques or idea to achieve hairy streak like patterns in FLIP or otherwise a completely different concept of achieving dynamic abstract hair like patterns I guess. Thank you once again @Librarian! Edited May 14, 2020 by IhabAli 1 Quote Link to comment Share on other sites More sharing options...
Librarian Posted May 14, 2020 Share Posted May 14, 2020 Make same different random copies of lines ( play with wire (option ) in dopsolver , I hope it gonna give some ideas ..have fun ..Maybe it Helps Again sorry for eventual errors still on H16.5 smoke_and_wire.hipnc 1 Quote Link to comment Share on other sites More sharing options...
Atom Posted May 14, 2020 Share Posted May 14, 2020 That is a fun one to play with. Here is my attempt at mixing those two files together, along with one more layer added in. ap_smoke_and_wire.hipnc Quote Link to comment Share on other sites More sharing options...
IhabAli Posted May 14, 2020 Author Share Posted May 14, 2020 Nice! I’m trying to see if combining my original flip setup and a Vellum based wire solver would get closer to the reference. Quote Link to comment Share on other sites More sharing options...
Atom Posted May 14, 2020 Share Posted May 14, 2020 A little better. Basically cut a hole in a box and let the smoke fall into it via gravity. Quote Link to comment Share on other sites More sharing options...
Atom Posted May 14, 2020 Share Posted May 14, 2020 (edited) Adding more resolution does help. Here is a thirty million voxel upres from an eight million voxel source that leveraged OpenCL. This took about 24gb of physical ram. Edited May 15, 2020 by Atom Quote Link to comment Share on other sites More sharing options...
IhabAli Posted May 15, 2020 Author Share Posted May 15, 2020 (edited) Nice @Atom, looks very similar to the inner layer. Are you using smoke only or still running the wire sim? I'm getting very close to reference with my custom FLIP solver. If you want to share your file I can combine the two EvilPortal test.mp4 Edited May 15, 2020 by IhabAli 1 Quote Link to comment Share on other sites More sharing options...
Librarian Posted May 15, 2020 Share Posted May 15, 2020 Share first your file ... it's clear that everyone in this topic should share files now... @IhabAli Quote Link to comment Share on other sites More sharing options...
IhabAli Posted May 15, 2020 Author Share Posted May 15, 2020 @Librarian my setup was shared from the very first post. I’ve just been tweaking parameters and resolution Quote Link to comment Share on other sites More sharing options...
Atom Posted May 15, 2020 Share Posted May 15, 2020 I show how to build my setup in this video. 1 1 Quote Link to comment Share on other sites More sharing options...
IhabAli Posted May 15, 2020 Author Share Posted May 15, 2020 (edited) Thanks @Atom, I know how to build it, I was just being lazy I'm still working on a customization in the vellum solver for wire breaking in an attempt to create even more fine details. Nice tutorial BTW! Edited May 15, 2020 by IhabAli Quote Link to comment Share on other sites More sharing options...
Librarian Posted May 18, 2020 Share Posted May 18, 2020 With this @IhabAli I think no need for velum shmelum and other stuff. I like this setup I can build (sky its A limit ) ..Here you have 3 different samplers (point clouds) and setup for Vop for having control over source shape and point that attract and do other crazy sh...HAve fun (here its like 15000 points Only ) // from spherical coordinates to cartesian coordinates // from tangent-space vector to world-space sample vector --------------------------------------------------------------------------------- float VanDerCorpus(int n; int base) { float invBase = 1.0f / float(base); float denom = 1.0f; float result = 0.0f; for(int i = 0; i < 32; ++i) { if(n > 0) { denom = float(n) % 2.0f; result += denom * invBase; invBase = invBase / 2.0f; n = int(float(n) / 2.0f); } } return result; } // ---------------------------------------------------------------------------- // ---------------------------------------------------------------------------- vector2 HammersleyNoBitOps(int i; int N) { return set(float(i)/float(N), VanDerCorpus(i, 1)); } vector ImportanceSampleGGX(vector2 Xi;vector N;float roughness) { float a = roughness*roughness; float phi = 2.0 * PI * Xi.x; float cosTheta = sqrt((1.0 - Xi.y) / (1.0 + (a*a - 1.0) * Xi.y)); float sinTheta = sqrt(1.0 - cosTheta*cosTheta); // from spherical coordinates to cartesian coordinates vector H; H.x = cos(phi) * sinTheta; H.y = sin(phi) * sinTheta; H.z = cosTheta; // from tangent-space vector to world-space sample vector vector up = abs(N.z) < 0.999 ? set(0.0, 0.0, 1.0) : set(1.0, 0.0, 0.0); vector tangent = normalize(cross(up, N)); vector bitangent = cross(N, tangent); vector sampleVec = tangent * H.x + bitangent * H.y + N * H.z; return normalize(sampleVec); } int n = 596; for(int i=0;i<n;i++){ int test = i; vector2 xy = HammersleyNoBitOps(test,n); vector testNormal = chv("normal"); vector newpos = ImportanceSampleGGX(xy,testNormal, chf("roughtness")); addpoint(geoself(),newpos); } ------------------------------------------------------------------------------------------ 2 float r = chf("radius"); float u = chf("u"); float v = chf("v"); //float phi_max = rand(@ptnum*4) * 1.0f * PI; float phi_max = @ptnum*0.2 * 2.0f * PI; float theta_min = rand(@ptnum*1000); float theta_max = rand(@ptnum*500) * PI; float phi = u * phi_max; float theta = theta_min + v*( theta_max - theta_min); float x = r * sin(theta) * cos(phi); float y = r * sin(theta) * sin(phi); float z = r * cos(theta); @P.x = x; @P.y = y; @P.z = z; ------------------------------------------------------------------------------------------------- 3 ------------------------------------------------------------------------------------------- float llerp(float a;float b;float f) { return a + f * (b - a); } int nsamples = 1604; for (int i = 0; i < nsamples; ++i) { vector sample = set( rand(i)* 2.0 - 1.0, rand(i*51400) * 2.0 - 1.0, rand(i*5024713)); sample = normalize(sample); sample *= rand(i*50723); float scale = float(i) / float(nsamples); scale = lerp(0.1f, 1.0f, scale * scale); sample *= scale; addpoint(geoself(),sample); } Quote Link to comment Share on other sites More sharing options...
IhabAli Posted May 18, 2020 Author Share Posted May 18, 2020 (edited) I'm putting this out here since this thread keeps going off topic I managed to recreate the fine hair like tentacle details by dividing the simulation into much smaller segments, using much smaller noise scales in the pattern driving the attribute based emission of the flip fluid. With a bit of tweaking on the viscosity and the simple custom cooling wrangle(see my original file in this post), the smaller segments are able to consistently hold hair like details as the flip fluid breaks under the turbulent forces added to the solver. Next I implemented a simple looper for the simulated segment by just cross fading the particles' alpha(or any arbitrary attribute that would eventually drive opacity in the shader). Replicate these around any shape(example below using a for loop, copy transform, and some iteration based instance randomization for time offset). The results below are rendered in Renderman. Obvisouly this is based on a single simulation run but much better results can be achieved by running and looping multiple independent simulation seeded differently. This is a perfect application for PDGs. I ' ClusteredSim.mp4 Edited May 18, 2020 by IhabAli 3 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.