Giter Site home page Giter Site logo

blender_vertex_color_master's Introduction

Vertex Color Master for Blender

Warning: This addon does not work well from Blender 3.2 to 3.6 due to internal changes in vertex attributes in Blender. However, there is currently an 0.9.0 alpha release available that should work with Blender 4.0+. This alpha release has some issues (notably the redo panel) that may be fixed in the future, but I can't make any guarantees due to other commitments.

Users with Blender 3.1 and prior should be fine using the much older 0.8.4 release.

An add-on for Blender that adds numerous features to assist working with vertex colors.

Contents

  1. Installation
  2. Usage
  3. Brush Settings
  4. Active Channels
  5. Data Transfer
  6. Misc Operations
  7. Pie Menus
  8. Planned / Possible Features

Installation

Note: This add-on requires Blender 2.80 or above. There is an older release compatible with Blender 2.79 available here.

  1. Download the latest release from GitHub here.
  2. In Blender, open the Preferences window (Edit>Preferences) and select the Add-ons tab.
  3. Press the 'Install...' button and select the .zip file you downloaded.
  4. Enable the add-on and save preferences if you want it to always be available.

Usage

This add-on is mostly designed for people who use vertex colors as extra non-color data, such as artists making models for games, where such data can be useful for creating interesting shader effects, or for storing baked light data. The tools provided by this add-on allow the user to fill, invert, posterize or remap individual color channels, as well as copy or swap channels between layers and exchange vertex weight and UV data to and from color channels.

One of the key features of the addon is its isolate workflow, which allows the user to isolate a single channel (R,G,B or A) of vertex color data and work on it using all the usual vertex paint tools. The data transfer features can then be used to pack different vertex color data into single channels, with the remap and posterize functions helping to ensure the data is in specific ranges.

The add-on will appear in the details panel (press 'n' to open) to the right of the 3D view when in vertex paint mode as shown in the following image.

Vertex Color Master UI


Brush Settings

Brush settings contains a few of the most useful brush options so that the add-on can be open and useful without needing the full brush menu to be open. This way there is more space in the Tools panel, even on smaller displays.

  • Use Grayscale (Off) - Enable this if you would prefer to work with grayscale sliders instead of RGB color pickers. The grayscale sliders are automatically enabled when a channel is isolated.

  • Match Active Channels (On) - With this option enabled, changing the active channels will update the brush color to match the channels that are active, such that enabling only R will give red, R and G will give yellow and all RGB will give white etc. This is useful for painting with add or subtract blend modes. If this is undesirable, disable this option.

Color Picker

The primary and secondary brush colors are shown here. Press the button on the right to switch between them. Value sliders are shown when the 'Use Grayscale' option is enabled. Note that you can also press the 'X' key to switch between the primary and secondary colors.

Fill With Color / Fill With Value

This will ignore any selected active channels and fill the mesh with the current brush color. It can use the selection mask mode, so this is a handy shortcut for filling selected faces or vertices with a specific color instead of trying to set the value via channels or painting.

  • Fill Color (White) - Color with which to fill the mesh or selection (if using selection mask).

Active Channels

The active channels section allows the user to enable or disable channels that the functions directly under the active channels will work on. For example, enabling only the R channel will mean that it is the only channel to be affected when the Invert button is pressed, etc. Different combinations of RGBA can be selected by holding the shift key while clicking on the channel buttons.

As channels are activated and deactivated, the brush color will update to match them. If the Add or Subtract brush blending modes are set, this enables the user to paint only on active channels quite easily.

Note: At the time of writing, Blender 2.80 does not support rendering or painting with vertex alpha, but the alpha values are stored in the vertex color data correctly. This will hopefully be improved in the future, but for now, alpha data can be edited or viewed by isolating the A channel.

Isolate Mode

Isolate Active Channel

When a single channel is selected, the option to isolate it and work in grayscale mode becomes available. Simply press the 'Isolate Active Channel' button and the active channel will be isolated and the Vertex Color Master UI will change to reflect this. Once in isolate channel mode, the UI will change to reflect this and the color picker will change to grayscale value sliders. Once changes to the channel have been made, they can be applied by pressing the 'Apply Changes' button, or discarded by pressing 'Discard Changes' instead.

  • Channel (R) - The channel that was isolated can be changed by selecting a different one.

Fill / Clear

Fill sets the value of the currently active channel(s) to 1, whereas Clear will set it to 0.

  • Value (1.0) - The value to fill the channel(s) with.

  • Fill With Color (Off) - Ignore active channels and fill the vertex color layer with 'Fill Color'.

  • Fill Color (White) - Color to use when 'Fill With Color' is enabled.

Invert

Inverts the value of the currently active channel(s).

Posterize

Posterize the value of the currently active channel(s). Useful for cleaning up channels where the value should be 0 or 1, or otherwise snapping the value to increments determined by the number of steps.

  • Steps (2) - The number of value steps to posterize to. For example, setting this to 5 would snap the values of the active channel(s) to 0, 0.25, 0.5, 0.75 and 1, whilst leaving the default setting of 2, would result in black and white.

Remap

Remap the value of the currently active channel(s). This function takes values in the active channel and scales them based on an input range and output range. It's somewhat similar to using levels in a 2d graphics package, so it can be used to adjust the minimum and maximum brightness, invert etc. If used on individual channels, it can be used to shift colors apart.

  • Input Range Min (0.0) - Minimum value of the input range.

  • Input Range Max (1.0) - Maximum value of the input range.

  • Output Range Min (0.0) - Minimum value of the output range.

  • Output Range Min (1.0) - Maximum value of the output range.


Randomize Mesh Island Colors Per Island (Islands on UI)

All separate parts of a mesh (islands), will be assigned random values per active channel based on various randomization parameters.

  • Active Channels (RGB) - Channels to randomize. Allows the channels to be randomized to be modified in the operator redo panel.

  • Merge Similar (off) - Random colors will be assigned to different mesh islands based on the number of faces of the island. The assigned colors will be random, but if two or more islands have the same face count, they will all share the same color. This is useful for creating an id map from vertex colors.

  • Seed (1) - The seed determines how the random colors are generated. This ensures the same 'random' colors will be generated each time. To change the colors, change the seed value.

  • Min (0.0) - Minimum value for the random values.

  • Max (1.0) - Maximum value for the random values.

Data Transfer

This section allows quick transfer of data between different color layers, vertex groups and uv layers on the same object. Values can be transferred between 'Src' and 'Dst' layers. When using a vertex color layer, the RGBA channel will be selectable from the channel dropdown on the right. If a vertex group is selected (vertex groups are prefixed with 'W:', for weight), the channel dropdown will be disabled. If a UV layer is selected (UVs are prefixed with 'UV:'), channels will not be selectable at all.

Depending on the type of data selected in either 'Src' or 'Dst', a different operations will be available from the UI. If vertex groups or UVs are selected in either 'Src' or 'Dst', a different UI will be shown that enables only simple data transfer. Transfer between two vertex groups, uv layers or vertex groups and uv layer is currently unsupported.

Copy / Swap

Copy data from the 'Src' layer/channel to the 'Dst' layer/channel. Using swap will swap the data instead of copy.

  • Swap Channels (Off) - Swap 'Src' and 'Dst' channel data instead of just copying from 'Src' to 'Dst'.

  • All Channels (Off) - If swap is disabled, the data from the 'Src' channel will be copied to all channels of the 'Dst' layer.

Blend

Blends the 'Src' channel with the 'Dst' channel and puts the result in the 'Dst' channel by default.

  • Blend Mode (Add) - Set the blending mode to use.

  • Result Channel (R) - Set a different channel to put the resulting data of the blend if overwriting the 'Dst' channel is not desired.

Src RGB to Luminosity

This calculates the luminosity of the vertex color data in the 'Src' layer and puts the value into each of the RGB channels.

  • All Channels (On) - Copy the luminosity value into each of the RGB channels. If disabled, the luminosity value will only be copied into the 'Dst' layer's selected channel.

Src to Dst RGB

Copy the value of the 'Src' channel into all channels of the 'Dst' layer.

Weights to Dst

Copy the weight value of the vertex group in the 'Src' layer to the 'Dst' channel.

Src to Weights

Copy the value of the 'Src' channel to the vertex group in the 'Dst' layer.

UVs to Color

Copy the weight value of the uv layer in the 'Src' layer to the 'Dst' channel.

Color to UVs

Copy the value of the 'Src' channel to the uv layer in the 'Dst' layer.

Normals to Color

Copy the object space normals to the 'Dst' color layer (XYZ > RGB).

Color to Normals

Copy the 'Src' color layer to the custom mesh normals (Requires object space normals, RGB > XYZ).


Misc Operations

The 'Misc Operations' section contains features unrelated to the main features of the addon.

Blur Channel Values

Blurs the values of all the vertices in the mesh to smooth them out. It uses the smooth weights function available in weight paint mode, but allows it to be used interactively on vertex color channel data. Note: This feature is currently only available when a channel has been isolated.

  • Factor (0.5) - The amount of blur to apply.

  • Iterations (1) - The number of times to apply the blur. Increasing this will result in a smoother blur.

  • Expand/Contract (0.0) - Use this to adjust the balance of dark/light values as the blur is applied. It is similar to brightness/contrast adjustment, or the remap operator.

Randomize Mesh Island Colors

All separate parts of a mesh (islands), will be assigned random colors based on various randomization parameters.

  • Randomize Hue (on, 0) - Enable randomization of the hue parameter of generated colors. When disabled, the value to the right will be used instead of being random.

  • Randomize Saturation (off, 1) - Enable randomization of the saturation parameter of generated colors. When disabled, the value to the right will be used instead of being random.

  • Randomize Value (off, 1) - Enable randomization of the value parameter of generated colors. When disabled, the value to the right will be used instead of being random.

  • Seed (1) - The seed determines how the random colors are generated. This ensures the same 'random' colors will be generated each time. To change the colors, change the seed value.

  • Merge Similar (off) - Random colors will be assigned to different mesh islands based on the number of faces of the island. The assigned colors will be random, but if two or more islands have the same face count, they will all share the same color. This is useful for creating an id map from vertex colors.

  • Order Based (off) - Instead of using actual random colors, set the colors based on the number of parts. This will result in the best possible separation of colors, as the default random setting can sometimes give different parts very similar shades.

Adjust HSV

Enables modification of the Hue, Saturation and Value of vertex color data using Blender's built-in HSV adjust function.

  • Hue (0.5) - Adjust the hue of vertex colors.

  • Saturation (1.0) - Adjust the saturation of vertex colors.

  • Value (1.0) - Adjust the value of vertex colors.

Brightness/Contrast

Enables adjusting the brightness and contrast of the vertex colors using Blender's built-in Brightness/Contrast function.

  • Brightness (0.0) - Adjust the brightness of vertex colors.

  • Contrast (0.0) - Adjust the contrast of vertex colors.

Dirty Vertex Colors

Uses Blender's built-in Dirty Vertex Color function to darken the vertex colors based on the curvature of the mesh. This is useful for generating fake ambient occlusion, and can be adjusted using either Brightness/Contrast or Remap to create a more pleasing result. Note that the vertex colors should be set to white before applying this effect, as it is applied over the top of existing colors.

  • Blur Strength (1.0) - Strength of the blur applied to the dirt effect.

  • Blur Iterations (1) - Number of times the dirt is blurred.

  • Highlight Angle (180) - Angle of the highlight given to convex angles.

  • Dirt Angle (0) - Angle of the dirt given to concave angles.

  • Dirt Only (Off) - Do not add highlight and only darken the vertex colors.

Linear Gradient

When enabled, the gradient tool allows you to draw a line representing the start and end of a gradient in the 3D view. Once the line has been drawn, a gradient will be painted onto the mesh. The brush primary and secondary colors are used to set the gradient colors.

  • Start Color - Start color of the gradient.

  • End Color - End color of the gradient.

  • Circular Gradient (off) - Switch between circle and linear gradient.

  • Use Hue Blend (off) - Blend using all the colours in between start and end, instead of a linear blend.

Circular Gradient

The circular gradient tool is similar to the gradient tool, but draws a radial gradient, with the center at the first position clicked, and edge at the second.

Note: Circular gradient uses the same underlying operator as the Linear gradient, and so has the same options.


Pie Menus

Most of the features of the addon can also be accessed from a pie menu that is bound to the 'V' key. The pie menu appears as shown in the image below.

Standard pie menu

When in isolate mode, the pie menu is slightly different, as shown in the following image.

Isolate pie menu


Planned / Possible Features

  • Add function to set UV islands to random colors.
  • Tools to aid with non-destructive blending of layers.
  • Improvements to pie menus.
  • Optimisations to improve speed of masked operations.
  • Optimisations to improve speed in dense mesh.

blender_vertex_color_master's People

Contributors

andrej730 avatar andyp123 avatar joseconseco 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  avatar  avatar

blender_vertex_color_master's Issues

2.80 Move VCM UI To new Tab

The VCM UI currently appears in the view tab, underneath all the view options. It should be moved to its own tab so it is easier to use.

BUG: Isolate channel might cause error on multi-selection?

There may be a problem with isolate channel, in that it does not correctly isolate if an object in the selection already has the selected channel isolated (name conflict). Otherwise, perhaps I pressed the isolate button twice somehow, but either way it needs looking into.

Isolate mode not working correctly

When switching to isolate mode, a new channel is created, but Blender does not switch to viewing it. This seems to have occurred around Blender 3.2

Needs converting to 2.80

The script does not work with Blender 2.80 because the Python API has changed. Also, due to Blender UI changes (top bar, properties panel and totally changed tools panel) the UI of the script needs to be changed.

Vertex color transfer blend error

Hi! I'm trying to blend (multiply) ambient-occlusion vertex color layer with my hand-painted vertex color layer.

But there is an error on blend button press:

Traceback (most recent call last):
File "C:\Users\bulat\AppData\Roaming\Blender Foundation\Blender\2.82\scripts\addons\vertex_color_master\vcm_ops.py", line 883, in invoke
self.result_channel = settings.dst_channel_id
NameError: name 'settings' is not defined

location: :-1

I'v tried to add
settings = context.scene.vertex_color_master_settings
on line 882
well, it does not throw an error anymore, and even does something, but it is not even close to actual multiplication of my colors to b/w occlusion values I need to achieve.

What can be done?

Suggestion: Moving to Paint Tab

This tool is awesome.
On my install I made a change to vcm_menus.py, and changed the location from 'View' to 'Paint'.

line 37: bl_category = 'Paint'

This makes my color palette readily available. And Paint Tab is less crowded so there is less visual clutter.

https://imgur.com/a/1CYvtj3

Just a suggestion.

Add 'affect alpha' to VCM menus

This is a really useful option. Disabling it means that you can't paint on the alpha channel, and since the brush doesn't seem to support proper alpha painting, it would be very helpful to sync it with the alpha channel in the RGBA mask.

Update to meet latest Blender Python API standards

Since the last version of the addon was released (Oct 2019, when Blender 2.80 was the current Blender version!), there have been a lot of API changes. Not all affect the addon, but several do, so it needs to be updated to meet all the latest standards and ensure that there is less chance of a bug occurring due to outdated API usage.

Here is a rundown of changes that potentially need accounting for:
2.81 - Tooltips can be dynamic. This may be useful for multi-function operators.
2.83 - Versioning in bl_info has changed.
2.90 - Operators NEED to be exposed through menus to appear in the regular search. I have the developer search enabled, so it hasn't affected me, but operator search is a very useful way of finding operators. There are also some UI additions that may be useful.
2.91 - New geometry attributes API, which may be useful for interacting with data
2.93 - GPU module used instead of bgl. Not sure if I'm still using bgl to draw lines etc. but it will need replacing if I am. There's also something about annotations that I'm not sure is relevant or not.
3.0 - Depends on cursor operator option. Probably required if operators need exposing in a menu. UI Data probably not needed, but worth looking at.
3.1 - Slight modification to mesh normal access. Look into how mesh vertex data is stored in general, as it may have had an overhaul.
3.2 - Mesh vertex colours is deprecated. This is huge and the addon will need significant changes to adapt to this (well, unless the data can be accessed in almost the same way). Mesh.attributes seems to be the new place to access the data, with multiple layer types: BYTE_COLOR, FLOAT_COLOR. Also significant is that the colour space of vertex colours has changed from sRGB to scene linear. Not sure what needs to be done regarding the colour space change. More information about the new colour layers/attributes can be found here.

In addition to all these changes, geometry nodes were added around version 3.0, and may enable some other workflows that could be beneficial to users of the addon. Investigate whether or not it is worth adding some built in nodetrees to give users another way to work with channel data.

Individual Channel Painting Issue

Okay, i'll try to explain this as best as i can. I use blender for modding Grand Theft Auto 5 vehicles. One of the things that i find tedious to do in ZModeler 3 is vertex paint (because manually selecting verts takes way to long and blender has much faster ways of doing this) Regarding the vertex paint, i need to be able to edit individual paint channels because they all correspond to different functionality within the game. i.e: R - Ambient Occlusion, G- Deformation Modifier, B - Burn Map. The issue that i am currently having is that i need to be able to paint selected verts on the R channel to Red 204. With G and B being ignored. The problem is, when i do this (and i am forced to leave G and B to 255 because the isolation option has no color options, just some "brush settings" that do not convert at all to color, that i can see) it paints the other channels selected verts to 255 as well, which in-turn ruins deformation and burn in game. Now, i think they are manually fixable, but its generally pretty tedious having to work backwards when working on my projects. And vertex painting in ZModeler 3 is def not an option at all. I have a few proposals for how this can be fixed:

  1. Either set brush settings to an actual color value in isolate channel mode (V in HSV doesn't make any sense, i just need Red 204 and then the rest to be completely ignored / not edited.)
  2. Doing this: https://prnt.sc/vjk0jh (highlighted in blue) should mean that only R channel is active therefore only R channel is edited regardless of what the RGB values are set to in the color picker. If you want to edit multiple channels at once, you hold shift to turn on those other channels.

Theres a chance i am just incompetent or didn't really explain this issue very well, but hey, i tried. Would very much appreciate a fix / patch to this addon so i can further speed up my vertex painting workflow. I really love the addon, and appreciate all the work that has gone into it :) Andy, if you would like further explanation of the issue at hand, please feel free to contact me on Discord : 13Stewartc#9365, i'd be happy to show you what my issue is directly. Thank you -13Stewartc

Blender 4 - Add on installed correctly, UI does not appear.

Hi there, I understand that this is an older addon and that it is prone to breaking.

I have come across this issue where the UI does not show up at all.

I have selected all in edit mode and gone to V-Painting, and the interface doesn't appear.

image

Transfering UV to Vertex Color doesn't work.

It seems that transfering UV to Vertex Color has a bug.
I made a simple plane and subdivide it , and transfered uv to vertex color.
The result seems broken.

I used Blender 2.80.75

VCMaster_error

Feature: Material quick preview

Although it's currently not possible to view vertex alpha in the viewport, it IS possible to set up an emission shader with vertex alpha transparency to preview vertex color and alpha at the same time.

Painting with alpha is also not working in the latest 2.81 alpha, but having a quick preview would be pretty handy. Implement as a simple toggle so that users can bind a single shortcut to toggle. Perhaps add an option in the add-on prefs that allows the user to use emission, principled, diffuse by default.

Feature: Custom Normals to RGB

Not how much trouble this would be, or how worth it, but it would be nice to copy custom normals to RGB (or even compressed to just RG or BA).

Linear Gradient does not account for the Meshes current pose/blendshape

Linear Gradients seem to only apply to a model as if it was at it's base pose and blendshape settings, however, sometimes it's necessarry to pose the character in a certian way, set up a linear gradient and then revert this pose.

In my case, I have a character where I want the gradient to start from the bottom of their shirt, and end at the end of their sleeves. In order to do this, I go into pose mode and rotate the arms 90 degrees up and then create the gradient from the bottom up.

Curently, I have to pose the character, create a blend shape, apply the blendshape to basis, do the lienar gradient, and then reset the pose and manually undo the application to basis.

Is it possible to make the gradient take into account the pose of the mesh? Thank you!

Isolated Blue channel saves in Red channel on 4.1+

Hi, I am using the latest fork from Andrej730 https://github.com/Andrej730/blender_vertex_color_master/tree/master (the only one working on Blender 4+), it worked well on 4.0 but since 4.1+ there is an issue that Blue isolated channel is being saved in Red instead.

Steps to reproduce:
Cube (or any other model) -> Edit Mode -> Select vertices
Vertex Paint-> Vertex Selection
VCM -> Fill with Color (Black to clear all vertex color)
B -> Isolate Active Channel -> Fill With Value 1.00 (To make them 100% Blue) -> Apply Changes
Now the vertices are Red instead of Blue.

Look for possible optimisations

Do some testing between mesh and bmesh editing to see if one is faster than the other.
Is there much selection and context switching that could be slowing things down?
Should I be using numpy?

Is it possible to apply random vertex colors to different objects with this addon?

Hello,
this addon looks very nice, thanks for efforts.
I'd like to know if it's possible to apply random vertex colors to multiple objects using it.
Or is the way to have this functionality by using Multi-Object editing in 2.8 ? I.e selecting several objects, applying unique vertex colors per meshes of one object and leave Vertex paint mode to return back to different objects?

Thanks.

Blender 2.91

The addon does not seem to work with the latest Blender 2.91 stable release.
Are there any plans to update the addon to support the latest blender releases?

Thanks in advance,

Best Regards, Stefan

"Paint solid face" vertex paint mode - feature request

I understand that users are able to paint by "face" in the vertex paint mode using Select faces, however would it be possible to add a Paint by Face option? that users could paint the nearest polygon a solid color without color gradients and without having to first individually paint those faces? It would be invaluable for me and the game project I am creating.

BUG: Keymap doesn't unregister correctly

The key for pie menus can't be unregistered properly, which sometimes causes errors on script reload and addon uninstallation.

Traceback (most recent call last):
addon_utils.py, line 437, in disable
mod.unregister()
init.py, line 113, in unregister
del bpy.types.Scene.vertex_color_master_settings
AttributeError: 'tuple' object has no attribute 'keymap_items'

Workflow issue with specific channel colors

Hi,

Just got the tool and it's incredibly powerful, but i'm perplexed at how i can achieve something as simple as making the yellow color be red on my red channel, as i do not have the option to fill the white of the isolated channel with a specific color, nor do i have the option to adjust the HSV values of a specific channel.

When installing on Blender 4.2 an error occurs

Add-on not loaded: "bl_ext.user_default.vertex_color_master", cause: module loaded with no associated file, path=_NamespacePath(['C:\Users\MyUsername\AppData\Roaming\Blender Foundation\Blender\4.2\extensions\user_default\vertex_color_master']), aborting!

2.80 Possible bug with blur

Using a long subdivided mesh with white along the edges and black in the center, blur seems to just blur to white across the entire mesh. Is this a problem with the weight blur tool in Blender, or the VCM operator implementation?

Feature: Add translation support

Someone was complaining a while ago about translating addons, so it would be good to add the ability to translate the UI if it isn't too much work. This way, others can provide translation for their own languages.

New release?

The last release was 15 oct 2019 and since some bugs were fixed relatively recently - I think it could be good time for creating new release.

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.