Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release the first working version #15

Open
6 of 8 tasks
PavelBlend opened this issue Apr 5, 2020 · 17 comments
Open
6 of 8 tasks

Release the first working version #15

PavelBlend opened this issue Apr 5, 2020 · 17 comments

Comments

@PavelBlend
Copy link
Collaborator

PavelBlend commented Apr 5, 2020

I think in order to release the first working version with minimal functionality, you need to do the following:

  • Seed particles from arbitrary geometry Seed from arbitrary geometry #5
  • Add simple colliders Sphere colliders #17
  • Ability to specify domain boundaries using cube object not necessary
  • Ability to specify a range of frames for simulation
  • Add the ability to visualize and render particles
  • Add sand material model
  • Add simple documentation (nodes descriptions, workflow, installation, using)
  • Make release script Create make release utils #38

After the implementation of these features, it will be possible to advertise the simulator to get more feedback, tips, help with development.

@yuanming-hu
Copy link
Member

Thank you so much for putting together this list. I think this is a great plan. I have too many things to do recently, so please forgive the delay on my end...

@PavelBlend
Copy link
Collaborator Author

PavelBlend commented Apr 9, 2020

@yuanming-hu I want to ask where it is better to add documentation? In this repository as md files or in a wiki?
https://github.com/taichi-dev/taichi_elements/wiki

I made the Emit Frame option work:
https://gfycat.com/givingcrazybushsqueaker

@yuanming-hu
Copy link
Member

How about using Sphinx so that we can host the document on readthedocs? Taichi uses this approach:https://taichi.readthedocs.io/en/latest/

Sphinx uses rst instead of markdown. For example, the source code for https://taichi.readthedocs.io/en/latest/hello.html is https://raw.githubusercontent.com/taichi-dev/taichi/master/docs/hello.rst

Blender itself uses Sphinx rst for documentation. If you think it's a good idea, I can quickly setup a documentation scaffold.

The video looks very cool!!!

@PavelBlend
Copy link
Collaborator Author

Yes, I think using Sphinx would be a better option. True, I never used it.

@yuanming-hu yuanming-hu mentioned this issue Apr 9, 2020
@PavelBlend PavelBlend pinned this issue Apr 12, 2020
@PavelBlend
Copy link
Collaborator Author

I have some news. I managed to assign different shaders to the particles. Now in one simulation there can be snow of different colors and with different shaders. Previously, it was possible to set only a different color (but not a shader). True, this method does not look very good, this method is a kind of workaround. I am retrieving information from a Particle Info node from an Angular Velocity socket.

https://giant.gfycat.com/SecondUnfitFattaileddunnart.webm

@yuanming-hu
Copy link
Member

Cool! It's great that we can assign different materials to different groups of particles.

(Sorry I got rather occupied these days. I'll have more time after this Friday.)

@yuanming-hu
Copy link
Member

@PavelBlend Do you need anything else from me for #17? If not, I'll improve the simulator to support "Ability to specify domain boundaries using cube object", by this Sunday :-)

@PavelBlend
Copy link
Collaborator Author

Is it now possible to create a collider based on a mesh object? Or are there currently only spheres among colliders? I would like to create colliders from arbitrary geometries.

@PavelBlend
Copy link
Collaborator Author

I reread #17 and saw that you said that you would add this function later. Then I do not need anything for #17

I will wait until it becomes possible to create colliders from meshes, but for now I will not add colliders to the blender.

@yuanming-hu
Copy link
Member

yuanming-hu commented Apr 22, 2020

Sounds good - adding arbitrary mesh as colliders might take me one more week. I can do that later. Before this Sunday I'll just try to do "Ability to specify domain boundaries using cube object" and maybe converting the mpm solver to sparse grids as well.

@yuanming-hu
Copy link
Member

yuanming-hu commented Apr 27, 2020

Update on specifying domain boundaries and sparse grids:

  • I implemented sparse grids locally, now the voxel grid has size [0, 4096) x [0, 4096) x [0, 4096), with voxels allocated on demand. This means in the simulator the domain can automatically extend along X+, Y+ and Z+.
  • To move on I need to modify Taichi to support negative coordinates, so that the domain would be [-2048, 2048) x [-2048, 2048) x [-2048, 2048). This means we can extend along X-, Y- and Z- as well.
  • I also need to upgrade the voxelizer so that we can see particles in any parts of the domain.
  • Once we have the above done, the domain boundary can be specified arbitrarily and we can easily get rid of the bounding box.

Considering this week I'm getting rather occupied at work, I don't think these can be finished within this week. Sorry about the delay.

@yuanming-hu
Copy link
Member

Really sorry for the delay. I finally implemented negative coordinates in Taichi: taichi-dev/taichi#945. Changes have to go through code review there.

video

Now we can get rid of the bounds. Of course, users will be able to specify bounds if they want. (In this example I set the ground as a bound.)

@PavelBlend
Copy link
Collaborator Author

This is very impressive. To achieve such granularity with a static domain, you need a lot of time and RAM.

Is ground an infinite plane? Or does it have borders? And is it possible to set ground in the form of a vertical plane?

@yuanming-hu
Copy link
Member

Thanks. Taichi has dynamic memory management and everything is allocated on demand.

Is ground an infinite plane? Or does it have borders?

It is virtually infinitely. The grid resolution is [-4096, 4095]x[-4096, 4095], and we are using [-256, 256]x[0, 128]. You can assume we will never touch the boundary.

And is it possible to set ground in the form of a vertical plane?

Sure. I'll implement that once I have a chance.

@yuanming-hu
Copy link
Member

And is it possible to set ground in the form of a vertical plane?

Sure. I'll implement that once I have a chance.

Done in #53 (MPM.add_surface_collider)

@r03ert0
Copy link

r03ert0 commented May 25, 2020

the pointer SNodes do not yet work with the Metal backend... would it be possible to have a version not using them? (it would mean having a metal alternative for lines 74-78 in mpm_solver.py)

@PavelBlend
Copy link
Collaborator Author

@yuanming-hu hello.

Do you have any plans to add new features to the engine?

I also need to upgrade the voxelizer so that we can see particles in any parts of the domain.

This opportunity is severely lacking. Voxelizer severely limits the simulation. You have to set objects in positive coordinates.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants