Giter Club home page Giter Club logo

com.unity.demoteam.hair's Introduction

Package: com.unity.demoteam.hair

Header

An integrated solution for authoring / importing / simulating / rendering strand-based hair in Unity. Built from the ground up with Unity users in mind, and evolved and hardened during the production of 'Enemies', the hair system is applicable not only to realistic digital humans, but also to more stylized content and games. It allows users to easily create 'Hair Assets', either from grooms from external DCC tools (through the alembic file format for curve data), or through simple built-in procedural generation tools (e.g. scatter x amount of hairs on a mesh or other primitive, or using a custom generator). Using a fast and flexible GPU-based solver that works on both strand- and volume-information, the system enables users to interactively set up ‘Hair Instances’ within scenes, and then see and interact with those instances as they are simulated and rendered in real time.

Requirements

  • Unity 2020.2.0f1 +
  • Compute shader enabled platform

Features

  • Authoring

    • Import grooms from external DCC tools through the alembic file format (.abc) [ depends on com.unity.formats.alembic >= 2.2.2 ]
    • Make procedural grooms in just a few clicks
      • Scatter strands on built-in primitives, or on user specified meshes
      • Shape strands using simple parameters like length and curl
      • Plug in your own generators for custom placement
    • Hierarchical clustering / Level of detail
      • Build clusters and LOD chain automatically from spatial relationships
      • Can also assign artist-provided clump maps + optionally refine them
      • Supports root-, strand-, and simplified strand-level clusters
    • Need to inject curves from a different system?
      • Plug in your own providers for custom curve data
      • Custom data also benefits from built-in processing pipeline
  • Skinning

    • Easily attach strand roots to skinned geometry in a scene [ depends on com.unity.demoteam.digital-human >= 0.1.1-preview ]
  • Simulation

    • Strand-based solver supporting tens of thousands of individual strands
    • Solver also adds volume-based quantities such as density and pressure
      • Uses physical strand diameter, physical strand margin
      • Applies pressure to preserve the volume of a groom
        • Allows targeting uniform density
        • Allows targeting initial pose density
      • Applies pressure to soften strand-strand collisions
      • Exposes scattering probe to HDRP physical shading model
    • Fully configurable set of constraints
      • Boundary collision w/ friction
      • Particle-particle distance (soft, hard)
      • Particle-root distance
      • Local bend limiter (<, >, =)
      • Local shape
      • Global position
      • Global rotation
    • Level of detail support
  • Rendering

    • Supports all current rendering pipelines
      • Built-in RP
      • HDRP
      • URP
    • Easily build your own hair materials
      • Add the ‘HairVertex’ node to any Shader Graph to read the simulation data
      • Add the 'HairVolume' node to access simulation volume data like density
      • (Planned) Optionally, assign generic materials as the cost of serializing strands to generic mesh [ will depend on Unity >= 2021.2 for vertex buffer access ]
    • Multiple modes of rendering
      • Render strands as simple line primitives
      • Render strands as view facing triangle strips w/ tangent space normals
      • Render strands as (view facing, for now) tube geometry w/ object space normals
      • Render high quality strands using the upcoming compute-based HDRP line renderer [ depends on Unity >= 2023.1.0a21 ]
    • Level of detail support
  • Level of detail

    • Seamless level of detail for both simulation and rendering
    • Automatic level of detail selection based on viewport coverage
      • Reduce runtime workload by processing only visible set of strands
      • Preserve global coverage as strands individually transition to subpixel
      • LOD scale/bias supported both per-group and per-material
    • Volume-accurate reduction enabled by hierarchical clustering
      • Reduced set of strands geometry retains volume of full geometry
      • Volume-based effects remain intact for reduced set of strands

Installation

Use Add package from git URL (in the Package Manager):

https://github.com/Unity-Technologies/com.unity.demoteam.hair.git

... or declare the package as a git dependency in Packages/manifest.json:

"dependencies": {
    "com.unity.demoteam.hair": "https://github.com/Unity-Technologies/com.unity.demoteam.hair.git",
    ...
}

Related links

References

  • [Bender et al. 2015] Position-Based Simulation Methods in Computer Graphics
  • [Bridson and Müller-Fischer 2007] Fluid Simulation SIGGRAPH 2007 Course Notes
  • [Gibou et al. 2002] A Second Order Accurate Symmetric Discretization of the Poisson Equation on Irregular Domains
  • [Harris 2004] Fast Fluid Dynamics Simulation on the GPU
  • [Kelager et al. 2010] A Triangle Bending Constraint Model for Position-Based Dynamics
  • [Kim et al. 2012] Long Range Attachments - A Method to Simulate Inextensible Clothing in Computer Games
  • [Kugelstadt and Schömer 2016] Position and Orientation Based Cosserat Rods
  • [Losasso et al. 2008] Two-Way Coupled SPH and Particle Level Set Fluid Simulation
  • [Macklin et al. 2014] Unified particle physics for real-time application
  • [Macklin et al. 2019] Small Steps in Physics Simulation
  • [McAdams et al. 2009] Detail Preserving Continuum Simulation of Straight Hair
  • [Müller et al. 2006] Position Based Dynamics
  • [Müller et al. 2012] Fast Simulation of Inextensible Hair and Fur
  • [Petrovic et al. 2005] Volumetric Methods for Simulation and Rendering of Hair
  • [Zhu and Bridson 2005] Animating Sand as a Fluid

See also

https://github.com/Unity-Technologies/com.unity.demoteam.digital-human

com.unity.demoteam.hair's People

Contributors

fuglsang avatar johnpars avatar mikko-alaluusua-unity avatar robcupisz avatar

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  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 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

com.unity.demoteam.hair's Issues

Hair rendered with New "High Quality Line Renderer" does not work in XR

Not sure if this is even a topic for this lib, probably this is due to a bug in HDRP, I also did a regular Unity bug report for this:
The rendering option "High Quality Lines" does not work correctly in XR.

Tried on latest beta (2023.1.7b). Hair gets rendered twice in low quality in XR. Without XR, everything seems to work as expected, looks much better then with standard line renderer.

will there be support for urp-v12 ?

Shader error in 'Hair/Default/HairMaterialDefaultLitSRP': 
redefinition of 'unity_MatrixPreviousMI' at 
Library/PackageCache/com.unity.demoteam.hair@7aa92e2cf9/Runtime/HairVertex.hlsl(27) (on d3d11)

Does not work hair in "HDRP High Quality Lines render" mode when using "Volume High quality line Render

Does not work hair in "HDRP High Quality Lines render" mode when using "volume High quality line Render.

It doesn't work with Recorder movie. I wonder how they managed to record it then to show it on youtube4K. The hair just disappears when in recorder mode.
Oh, I just realized that it doesn't work when pressing play, that is, when compiling. also disappears. I'm using it with the enemies demo 2023.1.0b14.

I guess this would be fine since I didn't touch any settings. Hair is not visible in HDRP High Quality Lines" mode when using "volume High quality line Render

However, it does work in other modes like built strips or built lines.

Please, are you so kind as to give me a solution for this or do we just have to wait for a new update?

I also congratulate you for the great job you did!

Movement of Hair is jittery

Moving the Gameobject with HairInstance results in jittery movement of Hair. I first thought it is due to me using FixedUpdate to move my physics based Game3Objects / Rigidbodies, but I changed the Hair code to be executed in FixedUpdate, and issue remains. Also changing the simulation frequency does not resolve this.

How can I make the hair recover to a different pose from the initial one after collision?

In our application, the final hair pose after some collision and recovery should be different from the initial pose.
For example, when sweeping the hair in the reversed direction of hair, we expect that the hair should keep being raised instead of recovering to its initial pose.
However, in this model, the final hair pose will always be the same as the initial pose.
How can I make them different?

Cannot use abc file for Hair Asset

I import an abc file into the Unity project.
I can see the curves (enabled Add Curves Renderer from the Alembic Importer).
I create a new Hair Asset. I set Type as Alembic.
In the "Settings Alembic -> Alembic Asset" I try to select the imported abc file but the selection window doesn't show the asset.
If I try to drag&drop the file in the box, cannot do it,
Tried also to create an empty game object, add Alembic Stream Player component, choose the abc file. Then drag&drop the gameobject to the Settings Alembic -> Alembic Asset but it doesn't accept it.

It seems AlembicStreamPlayer the HairAsset is looking for is something different from the one created by the Alembic importer.

Unity Version 2023.1.0.a23
Windows 10
Update demoteam.hair today
Alembic 2.3.0

How to colour each hair strand differently, depending on another object's colour at a certain vertex?

(Please let me know if there is a better place for this, as I wasn't able to find a section in the Unity forum for the Hair System).
Unity version: 2021.3.8f1
Render Pipeline: HDRP

I have a cube with a texture with different colours, like so:
image

To this cube, I am applying a Hair Instance component and I give it a material. I would like to colour the hairs according to the coloured sections of the cube. So: white hair on the white sections, light brown hair on the light brown sections.

I have found solutions online that were on C# and used ray casting, but that doesn't seem like a good approach given the immense amount of hair strands that could exist. Nor was I able to find a way to iterate through said strands.

My idea was to do this in shader graph but I'm not sure how to accomplish that.

Another important note is that the cube colours are changed by a shader. So the cube could be any colour and I'd need to pick the colour of each hair strand based on the colour applied to the cube at a certain vertex.
image

Hair "explodes" when I add a material

When I activate "Material" for the strands and add a material in the slot, the hair transform in these linear random lines.
image

This also happens when I hit undo sometimes and seems to only go away, when I delete and recreate the whole hair asset.
How can I fix this?

Hair collision is unstable with little and big boxes

Hair collision is stable and ok with a 1 meter side cube, but other dimensions does not work well.
On lower dimensions like 10 cm, the hair particles seem to bounce at a high velocity and a lot of particle pass through.
On higher dimensions like 5 m side, the particles does not bounce but slowly sink into the volume.

(I consider 1 world unit as 1 meter)

image

'HairRenderer' could not be found in 2023.1.0a7 (HDRP)

When you import the project into 2023.1.0a7 (HDRP) these errors show up in the console:

Library\PackageCache\com.unity.demoteam.hair@7aa92e2cf9\Runtime\HairInstance.cs(84,12): error CS0246: The type or namespace name 'HairRenderer' could not be found (are you missing a using directive or an assembly reference?)

and

Library\PackageCache\com.unity.demoteam.hair@7aa92e2cf9\Runtime\HairInstance.cs(190,11): error CS0246: The type or namespace name 'HairRendererGroup' could not be found (are you missing a using directive or an assembly reference?)

Error Exporting Curves from Blender to Unity

I have the same problem. Exportnig curves from bledner to unity has the following errors. Even though my curves have thousands of verts

Skipping alembic curve set (index 1) due to degenerate curves with less than two vertices.
Discarding provided curve set due to degenerate curves with less than two vertices.

Hair strands not showing with path tracing

When using HDRP path tracing hair doesn't show.
Steps to reproduce,

  1. create hair item
  2. turn on path tracing in post processing.
  3. hair doesn't renderer in game view.

Is there a simple solution to this or is this a known issue?

Accessing position vertices

I would like to access the mesh data of the strands in cpu, but I can't seem to find a way forward.
I can find the mesh and the mesh filter but no position data.

The closest I have managed is :
vertices = hairInstance.strandGroupInstances[0].sceneObjects.strandMeshFilter.mesh.vertices;
But this returns an empty array.

Capture

In the above image I can see that the Mesh has no position data. Just 2 UV channels. As far as I know the data exists because of the unique hair node used in shader-graph has a position attribute.

Truly stumped, any suggestions?

WebGL support

Hello,

Does the plugin support WebGL builds?

I got the following error on WebGL:
ArgumentException: Kernel 'KInitialize' not found.
Rethrow as TypeInitializationException: The type initializer for 'Unity.DemoTeam.Hair.HairSim' threw an exception.

Limit of 8 colliders is very limiting.

In my game, the hair can be in collision with a lot of different objects, for example :

  • the character skin,
  • another character touching them,
  • player's hands (in VR),
  • any object the player hold in their hand.

These objects can collide one another and use primitive colliders instead of mesh colliders for obvious performance reasons. Therefore, the hair can be in contact with hundreds of spheres or capsules simultaneously.

But the demoteam hair asset does not allow more than 8 colliders in total, and only a single SDF. I understand that it is mainly designed to have collisions with the body of the character, but it very limiting. Even a character lying on a bed could not have their hair correctly colliding with a simple pillow that is not primitive shaped. Let alone my own use case when you can actually touch hairs.

As far as I know (being myself the author of the asset HairStudio), allowing hundreds of sphere colliders is completely doable without a massive impact on the performances. Most importantly, one should be able to make the choice of a slower simulation if they need to have a lot of collisions in their game.

Is there a way to lift the limit of 8 colliders somehow?

How can I control the stiffness more precisely?

I think I tried now every slider and tried understanding it, but for my groom I basically dont want to simulate the whole strand equally, but more of just the tips. The hair should be more inclined to hold its initial form and just wiggle around a bit. I kind of achieved that look, if I set gravity to 0, but I guess thats not really the intended workflow. If I set the gravity to anything other than 0, the hairs either fly up or completely fall down, as if they would be totally wet.
The following settings (which I thought to be important for that kind of concern) didnt made any change to my simulation: Striffness (Solver), Damping (Integration), Pressure.

DOTS collections preview package is not compatible

Currently the hair package breaks when using the preview version of dots. This appears to be because of changes to the collections package for example "UnsafeParallelHashSet" and "NativeArray" tend to give problems.

Is there any plan to make these compatible with each other?

Is it possible to export generated / simulated results as an FBX (or other)

Hi there,

Great package, I'm getting good results for foliage props using the strand based system.

I have the Unity FBX exporter package installed also, but it fails to export the simulated strand-based resulting mesh. Is there any way of successfully exporting this mesh without making a bespoke exporter myself?

Cheers.

Unable to update api And cannot see the hair in sample scene

When I was trying to load them in my project , the console told me that:
com.unity.demoteam.hair-master\Runtime\Utility\LongOperation.cs(25,38): error CS0619: 'FixedString128' is obsolete: 'Renamed to FixedString128Bytes (UnityUpgradable) -> FixedString128Bytes'

and i cant see the hair in the sample scene but can see it in the hierarchy.

Only one SDF Collider allowed

If I add more than one SDF ( Discrete) Collider to Hair Instance, a message appears that the limit of 8 colliders is exceeded, and the second SDF Collider is not being used in Simulation.
Is this a known limitation or a bug?

Render strands as view facing triangle strips - how to use UV and apply textures?

When rendering strands as view facing triangle strips how can I apply textures to these? The HairVertex node provides 'strandUV' but using this to apply a texture doesn't give the expected result. For example, I'd like to apply alpha to the strands, fading them out at the end. I hoped a vertical gradient texture would do the trick, but it didn't work.

What UV layout do the strands use, and how do we get textures onto them?

Any help is much appreciated.

n

ss

NullReferenceException at HairSim.cs:567

error spam.. (tested reimport also, 2023.1.0a20, windows, hdrp 15.0.1)

from line:
s_solverCS = resources.computeSolver;

NullReferenceException: Object reference not set to an instance of an object
Unity.DemoTeam.Hair.HairSim..cctor () (at ./Library/PackageCache/com.unity.demoteam.hair@d9a8f0647e/Runtime/HairSim.cs:567)
Rethrow as TypeInitializationException: The type initializer for 'Unity.DemoTeam.Hair.HairSim' threw an exception.
Unity.DemoTeam.Hair.HairInstance.ReleaseRuntimeData () (at ./Library/PackageCache/com.unity.demoteam.hair@d9a8f0647e/Runtime/HairInstance.cs:1583)
Unity.DemoTeam.Hair.HairInstance.UpdateStrandGroupInstances () (at ./Library/PackageCache/com.unity.demoteam.hair@d9a8f0647e/Runtime/HairInstance.cs:667)
Unity.DemoTeam.Hair.HairInstance.Update () (at ./Library/PackageCache/com.unity.demoteam.hair@d9a8f0647e/Runtime/HairInstance.cs:5

angular velocity update in code?

Hi

I'm trying to find where the angular velocity is stored and updated in the code (from "Position and Orientation Based Cosserat Rods"). Can someone point me in the right direction? Or does this implementation skip that update?

BuiltIn Line Strand Renderer sometimes produces invalid normals

On complex hair, I get black screen flickering using the BuiltIn Line Strand Renderer, probably due to invalid normals being produced. This behavior goes away as soon as I switch to BuiltIn Strips Strand Renderer, so I guess it is not fault of my shader.

Impossible to access DemoTeam namespace in code

I want to change the solver settings via code (for example to dry hair over time by having less and less gravity applied).

But it seems that I cannot access the Unity.DemoTeam namespace and end up with this message in the console "Assets\Scripts\Kinematic\HairInstanceController.cs(3,13): error CS0234: The type or namespace name 'DemoTeam' does not exist in the namespace 'Unity' (are you missing an assembly reference?)"

I'm am able to manually include the DLL in the solution in Visual Studio, but whenever I go back to Unity, it recompile and remove the dependency.

The package is present in the package manager. Here is what I tried:

  • installed it with a git URL,
  • installed it by adding the dependency in the manifest,
  • restarted Unity,
  • tested on different projects,
  • tested on different Unity versions (2021.2 and 2022.1),
  • tested on different computer, have friend to test it as well,
  • tested with an up-to-date Visual Studio 2022.
  • tested the DigitalHuman package (also in the DemoTeam namespace) with the same result.

Anyhow I can't access any of the demoteam.hair public script via code.

Is there something I am missing here? is it because the package is experimental?

Making Hair Tip Thinner and Questions About Strand Renderer

Is it possible to change the hair size, and make the root thicker and tips thinner?
I guess it could be something to do with strand renderer - built in strip, but using this setting I cannot use custom material, nothing will be rendered in the scene.

My work flow:
Set up a hair instance object> set strand renderer to built in strip, scale up strand diameter and hair can be seen rendered, but in same length
Setup a shader like so
image
Apply it to the hair and the hair works weirdly
image

And if it required some shader knowledge it will be great if a sample shader can be provided, it's a bit advanced for me :)

Hair depenetration is too fast and brutal on SDF

When the hair is penetrating a SDF mesh, the depenetration causes a high velocity and a big bounce of the strands. It does not happen with sphere boundaries in my tests, with which depenetration is rather slow and linear.

This can happen when the hair is spawn or reset on a character that is not in their original pose (long hair spawned inside the back or shoulders for example).

Is there a way to lower the depenetration speed for SDF collisions?

Hair teleport and reset

I often need to teleport my characters, for example in cut scenes.

When moving the HairInstance object or parent, the hair simulation behaves like the character was moving very fast from point A to point B. The hair bounces back in position.

Is it possible to reset or teleport the hair somehow?

I found that we can disable/re-enable the HairInstance to reset the hair. This "solution" has issues:

  • it's not elegant, and it's not documented (the former may explain the latter ^^),
  • the hair is not drawn for one frame,
  • the hair is reset in its original local position (sometimes I want the hair being teleported as-is to preserve the current shape and/or animation, or prevent depenetration bounce).

If it's not possible, then it would be sweet to have a little documentation about how to reset the hair (I spent quite some time to find the disable/enable trick), and even better to be able to teleport the hair as-is, with its local shape and velocities.

Resample Curves Break Hair Asset

At the hair asset, choose alembic, drag alembic file in, click Resample Curves and then press the "build strand groups" button.
Results: the hair asset "breaks", I cannot tweak any setting, drag slider, change alembic file

the alembic file was made in blender particle system, download link:
https://drive.google.com/file/d/1vrVCyEL7AkEwZu2ewkcWmoOvRNAwIz01/view?usp=sharing

this error doesn't happen with alembic file made by Xgen

Unity Version 2023.1.0.a23
Windows 10
Update demoteam.hair today
Alembic 2.3.0

LOD search value slider seems to cause issues

Following observations while using the LOD search value slider:

  • At 0 the simulation is not active, Hair is rendered in weird way (seems to have become even weirder with later updates)
  • if changing the value it seems to break certain strands from being rendered. Correct behavior can sometime be restored by setting the value to 0 and then back again to higher value. This also happens while being used via API.
  • tbh the whole concept of the slider is not 100% clear. The LOD search value seems to be a LOD for the simulation quality. It seems to work in discrete steps, not continuous.

There is no way to get the initial hair vertex position, or the strand length

I wish to make a color gradient on the hair, say having the root red and the tip blue. The StrandUV.y in the HairVertex node helps, but I have two issues:

  • the strands' tips don't all have the same color because they have various lengths and StrandUV.y is scaled with the longest in the group.
  • the strands of the bangs have blue tips even if they are shorter, because they are on a separate group.

The solution I found was to have different materials on the different groups and calibrate the gradient length and/or spread for each group, with non ideal results.

A perfect solution would be to have access to the initial vertex position of the hair, so I can color my hairstyle with a simple gradient on Y axis.

It would also be good to have the non-scaled strand rate (0 is root and 1 is tip, whatever is the length), and the strand length so we can make a lot of different combinations.

Fails in Unity 2020.3.37f1 HDRP

In Unity 2020.3.37f1 (64-bit) this package throws an error in HDRP. It say you have the same code in 2 places. And your sample scene turns black.

Global hair movement is jittery when framerate is low

If the hair component is being moved, the movement becomes very jittery on lower framerates. There seems to be some interpolation going wrong if the framerate goes below some limit. As I am syncing the hair with articulation bodies, which don't have any interpolation, I need to do interpolation by myself, but the same interpolation based on (Time.time - Time.fixedTime) / Time.fixedDeltaTime works fine in all other scenarios, just the hair stays jittery no matter what I try.

How to create a colour gradient from the root to the tip of the hair strand?

Unity version: 2021.3.8f1
Render Pipeline: HDRP

Hi there,
I've been using the hair system and I'm trying to create pieces of hair with three different colours, from the hair root to the tip. Like this:
image

However, I've been unsuccessful in creating this effect. The closest I got was the image below, using the hair vertex position, but it's not the effect desired:
image

Could you give me some insight on how to achieve the effect I'm looking for?
I'm using Shader Graph and this is the graph I currently have:
image

Issues with placement mesh

I'm having issues using placement meshes. It seems that it doesn't recognize the mesh that I want to use (wedge of a sphere) and rather acts as though it were a full sphere or brush. Tried with different meshes. Some cubes will act as cubes as intended, and similar cube meshes will act as the same full sphere/ brush than when I tried using my wedge.

how to instance hairs, interpolating between alembic

Ive brought an alembic with curves from Blender to Unity. It contains strands, based on which, Id like to instance hairs on the head mesh. How can I use the alembic curves as guides and create hairs between them?

Compatiblity issues with entities 1.0.0.pre44

When updating entities to the new version (1.0.0.pre44) I get the following error:

Library\PackageCache\com.unity.demoteam.hair@8ad3d09\Runtime\HairInstance.cs(820,44): error CS0246: The type or namespace name 'UnsafeMultiHashMap<,>' could not be found (are you missing a using directive or an assembly reference?)

image

image

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.