Coder Social home page Coder Social logo

utilforever / cubbyflow-v1 Goto Github PK

View Code? Open in Web Editor NEW
93.0 13.0 11.0 229.42 MB

Voxel-based fluid simulation engine for computer games

Home Page: http://utilforever.github.io/CubbyFlow-v1

License: MIT License

CSS 0.28% JavaScript 1.58% HTML 0.07% CMake 0.49% C 1.20% C++ 95.83% Python 0.54%
physics-engine fluid-simulation-engine computer-graphics computational-physics c-plus-plus computational-fluid-dynamics voxel-based

cubbyflow-v1's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cubbyflow-v1's Issues

Check multiplication is correct in Quaternion class

	// TODO: Check the formula!
	template <typename T>
	Quaternion<T> Quaternion<T>::Mul(const Quaternion& other) const
	{
		Vector3<T> v1 = Vector3<T>(x, y, z);
		Vector3<T> v2 = Vector3<T>(other.x, other.y, other.z);
		Vector3<T> res = v2 * w + v1 * other.w + v1.Cross(v2);
		return Quaternion(w * other.w - v1.Dot(v2), res.x, res.y, res.z);
	}

	// TODO: Check the formula!
	template <typename T>
	Quaternion<T> Quaternion<T>::RMul(const Quaternion& other) const
	{
		Vector3<T> v1 = Vector3<T>(x, y, z);
		Vector3<T> v2 = Vector3<T>(other.x, other.y, other.z);
		Vector3<T> res = v2 * w + v1 * other.w + v2.Cross(v1);
		return Quaternion(w * other.w - v1.Dot(v2), res.x, res.y, res.z);
	}

Implement smoothed particles

  • SphStdKernel2 struct
  • SphStdKernel3 struct
  • SphSystemData2 class
  • SphSystemData3 class
  • SphSpikyKernel2 struct
  • SphSpikyKernel3 struct
  • SphSystemSolver2 class
  • SphSystemSolver3 class

Prepare list for Ver 0.2

  • Particle-Based Simulation
    • Data Structures
      • Particle System Data
      • Particle System Example
      • Neighbor Search
        • Searching Nearby Particles
        • Caching Neighbors
    • Smoothed Particles
      • Basics
        • Kernel
        • Data Model
        • Interpolation
        • Density
        • Differential Operators
      • Dynamics
        • Solver Overview
        • Pressure Gradient Force
        • Viscosity
      • Result and Limitations
    • Incompressible SPH with Larger Time-Step
      • Predict and Correct
      • Implementation
      • Results
    • Collision Handling
      • Defining Colliders

Implement 3D SPH

  • SphStdKernel3 struct
  • SphSystemData3 class
  • SphSpikyKernel3 struct
  • SphSystemSolver3 class

Pull latest bug fixes from Jet

There are some important bug fixes that were merged to Jet framework recently (Transform bug, for instance). Please take a look at the latest PRs from Jet and pull the fixes if they also exist in this project.

Implement Field classes

  • Abstract base class for 2-D fields
    • Field2.h / .cpp
  • Abstract base class for 3-D fields
    • Field3.h / .cpp
  • Abstract base class for 2-D vector field
    • VectorField2.h / .cpp
  • Abstract base class for 3-D vector field
    • VectorField3.h / .cpp
  • Abstract base class for 2-D scalar field
    • ScalarField2.h / .cpp
  • Abstract base class for 3-D scalar field
    • ScalarField3.h / .cpp

Implement particle system data

  • ParticleSystemData2 class
  • ParticleSystemData3 class
  • ParticleEmitter2 class
  • ParticleEmitter3 class
  • ParticleEmitterSet2 class
  • ParticleEmitterSet3 class
  • ParticleSystemSolver2 class
  • ParticleSystemSolver3 class
  • PointNeighborSearcher2 class
  • PointNeighborSearcher3 class
  • PointHashGridSearcher2 class
  • PointHashGridSearcher3 class
  • PointParallelHashGridSearcher2 class
  • PointParallelHashGridSearcher3 class
  • PointSimpleListSearcher2 class
  • PointSimpleListSearcher3 class

Implement Vector classes

  • Generic N-D vector class
    • Vector.h / .cpp
  • 2-D vector class
    • Vector2.h / .cpp
  • 3-D vector class
    • Vector3.h / .cpp
  • 4-D vector class
    • Vector4.h / .cpp

Prepare list for Ver 0.21

  • Consider T is integral type in Matrix classes
  • Process unused variable for constant fields
  • Check multiplication is correct in Quaternion class
  • Fix wrong search popup position in github-pages
  • Use std::filesystem in C++17
  • Pull latest bug fixes from Jet
  • Fix parallel implementation files

Implement Matrix classes

  • Static-sized M x N matrix class
    • Matrix.h / .cpp
  • 2-D matrix class
    • Matrix2x2.h / .cpp
  • 3-D matrix class
    • Matrix3x3.h / .cpp
  • 4-D matrix class
    • Matrix4x4.h / .cpp

Implement Custom / Constant Field classes

  • 2-D vector field with custom field function
    • CustomVectorField2.h / .cpp
  • 3-D vector field with custom field function
    • CustomVectorField3.h / .cpp
  • 2-D scalar field with custom field function
    • CustomScalarField2.h / .cpp
  • 3-D scalar field with custom field function
    • CustomScalarField3.h / .cpp
  • 2-D constant vector field
    • ConstantVectorField2.h / .cpp
  • 3-D constant vector field
    • ConstantVectorField3.h / .cpp
  • 2-D constant scalar field
    • ConstantScalarField2.h / .cpp
  • 3-D constant scalar field
    • ConstantScalarField3.h / .cpp

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.