react-native-ar / react-native-arkit Goto Github PK
View Code? Open in Web Editor NEWReact Native binding for iOS ARKit
License: MIT License
React Native binding for iOS ARKit
License: MIT License
I see there is a method for changing TextNode color in the ObjC code, and I've tried a few things and failed. Every time, it is white. What am I doing wrong?
<ARKit.Text color="rgba(0,0,0,1)"...
<ARKit.Text color r={0} g={0} b={0}...
<ARKit.Text color={{r:0,g:0,b:0}}...
I would propose to expose some callbacks:
onTapOnPlaneUsingExtent: is called with an array of ARHitTestResult by using ARHitTestResultTypeExistingPlaneUsingExtent (means: the boundary of the plane is taken into account)
onTapOnPlaneNoExtent: same, but extent is not used. (using ARHitTestResultTypeExistingPlane)
Alternative:
expose the hitTest-function to the react-world (with ref?). Gesture detection and tap detection is then in the responsibility of the library-user.
i will prepare a pr on this, but i would welcome feedbacks on that
When shape is changed, a node gets remounted instead of updated.
This prevents animating shapes via transitions and has some performance impact.
Shape should be updated in the same way like position, eulerAngles and rotation
Hi, I am using latest XCode (9.0 beta 6 (9M214v)) and latest iOS11 (11.0 15A5372a) and the linkintg is just not working at all.
Ld /Users/swyx/Library/Developer/Xcode/DerivedData/secondapp-bdwzcmqkvlyubtajfdnpdrwdcozp/Build/Intermediates.noindex/secondapp.build/Release-iphoneos/secondapp.build/Objects-normal/arm64/secondapp normal arm64
cd /Users/swyx/Desktop/webdev/tryreactnative/secondapp/ios
export IPHONEOS_DEPLOYMENT_TARGET=8.0
export PATH="/Users/swyx/Downloads/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Users/swyx/Downloads/Xcode-beta.app/Contents/Developer/usr/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
/Users/swyx/Downloads/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -arch arm64 -isysroot /Users/swyx/Downloads/Xcode-beta.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.0.sdk -L/Users/swyx/Library/Developer/Xcode/DerivedData/secondapp-bdwzcmqkvlyubtajfdnpdrwdcozp/Build/Products/Release-iphoneos -F/Users/swyx/Library/Developer/Xcode/DerivedData/secondapp-bdwzcmqkvlyubtajfdnpdrwdcozp/Build/Products/Release-iphoneos -filelist /Users/swyx/Library/Developer/Xcode/DerivedData/secondapp-bdwzcmqkvlyubtajfdnpdrwdcozp/Build/Intermediates.noindex/secondapp.build/Release-iphoneos/secondapp.build/Objects-normal/arm64/secondapp.LinkFileList -Xlinker -rpath -Xlinker @executable_path/Frameworks -miphoneos-version-min=8.0 -dead_strip -Xlinker -object_path_lto -Xlinker /Users/swyx/Library/Developer/Xcode/DerivedData/secondapp-bdwzcmqkvlyubtajfdnpdrwdcozp/Build/Intermediates.noindex/secondapp.build/Release-iphoneos/secondapp.build/Objects-normal/arm64/secondapp_lto.o -fembed-bitcode-marker -fobjc-arc -fobjc-link-runtime -ObjC -lc++ /Users/swyx/Library/Developer/Xcode/DerivedData/secondapp-bdwzcmqkvlyubtajfdnpdrwdcozp/Build/Products/Release-iphoneos/libRCTBlob.a /Users/swyx/Library/Developer/Xcode/DerivedData/secondapp-bdwzcmqkvlyubtajfdnpdrwdcozp/Build/Products/Release-iphoneos/libRCTAnimation.a -lReact /Users/swyx/Library/Developer/Xcode/DerivedData/secondapp-bdwzcmqkvlyubtajfdnpdrwdcozp/Build/Products/Release-iphoneos/libRCTAnimation.a /Users/swyx/Library/Developer/Xcode/DerivedData/secondapp-bdwzcmqkvlyubtajfdnpdrwdcozp/Build/Products/Release-iphoneos/libRCTActionSheet.a /Users/swyx/Library/Developer/Xcode/DerivedData/secondapp-bdwzcmqkvlyubtajfdnpdrwdcozp/Build/Products/Release-iphoneos/libRCTGeolocation.a /Users/swyx/Library/Developer/Xcode/DerivedData/secondapp-bdwzcmqkvlyubtajfdnpdrwdcozp/Build/Products/Release-iphoneos/libRCTImage.a /Users/swyx/Library/Developer/Xcode/DerivedData/secondapp-bdwzcmqkvlyubtajfdnpdrwdcozp/Build/Products/Release-iphoneos/libRCTLinking.a /Users/swyx/Library/Developer/Xcode/DerivedData/secondapp-bdwzcmqkvlyubtajfdnpdrwdcozp/Build/Products/Release-iphoneos/libRCTNetwork.a /Users/swyx/Library/Developer/Xcode/DerivedData/secondapp-bdwzcmqkvlyubtajfdnpdrwdcozp/Build/Products/Release-iphoneos/libRCTSettings.a /Users/swyx/Library/Developer/Xcode/DerivedData/secondapp-bdwzcmqkvlyubtajfdnpdrwdcozp/Build/Products/Release-iphoneos/libRCTText.a /Users/swyx/Library/Developer/Xcode/DerivedData/secondapp-bdwzcmqkvlyubtajfdnpdrwdcozp/Build/Products/Release-iphoneos/libRCTVibration.a /Users/swyx/Library/Developer/Xcode/DerivedData/secondapp-bdwzcmqkvlyubtajfdnpdrwdcozp/Build/Products/Release-iphoneos/libRCTWebSocket.a -lRCTARKit -Xlinker -dependency_info -Xlinker /Users/swyx/Library/Developer/Xcode/DerivedData/secondapp-bdwzcmqkvlyubtajfdnpdrwdcozp/Build/Intermediates.noindex/secondapp.build/Release-iphoneos/secondapp.build/Objects-normal/arm64/secondapp_dependency_info.dat -o /Users/swyx/Library/Developer/Xcode/DerivedData/secondapp-bdwzcmqkvlyubtajfdnpdrwdcozp/Build/Intermediates.noindex/secondapp.build/Release-iphoneos/secondapp.build/Objects-normal/arm64/secondapp
I have tried manual linking and XCode just crashes. Any ideas on what else I should do?
Is it possible to render an image?
It seems to be part of the library, but the code file is blank and there are no examples.
How can I fix this?
Also, from here const ARKitManager = NativeModules.ARKitManager;
in your ARKit.js
, I understand that you get ARKitManager from NativeModules from react-native. However, I can't find where is ARKitManager implemented in Facebook's react-native.
Hi,
Everything works well on my iPhone except that I can't display the custom element model here :
<ARKit.Model
pos={{ x: -0.2, y: 0, z: 0, frame: 'local' }}
model={{file: 'art.scnassets/ship.scn', scale: 0.01}}/>
I added the file to my XCode project by creating a new AR project in XCode and copied the art.sncassets folder to my React Native Project :
I think everything is setted correctly but the ship won't show :/
Does someone have an idea why ?
Thanks for your work !
Hi,
Great job in implementing this tool! It's seems great. Cannot wait to test it :-)
I saw this application running with ARKit written in Swift 4.0 : https://github.com/duzexu/ARuler
Do you think it's possible to make the same app with react-native-arkit?
Thanks a lot!
Allow to specify texture(s) to materials
Also we might think about how to attach multiple textures. At the moment we attach the same texture to every side. Maybe we create a new property materials
which is just an array of material
.
material
is specified, attach it to every side of the geometrymaterials
is specified, attach it as an arrayFor me, linking this library required running react-native link
, not react-native link react-native-arkit
- doing the latter resulted in:
Command `link` unrecognized. Make sure that you have run `npm install` and that you are inside a react-native project.
Hi there,
First of all well done for this library. It's a very exciting topic indeed and with the RN hype at the moment it will certainly gain traction in no time.
I have been playing around with ARKit and had the look at the ios source code. I can see that you used SCNNode
and ARPlaneAnchor
for the Plane.update
function.
Is it possible to click on the mobile screen to set an anchor and get the X,Y,Z position of this point on the plane?
Thank you very much.
Cheers,
Tom
What about changing the usage to a more React-like approach? I mean, the creation of the elements would be determined by their usage as children of the ARKit component.
It's a suggestion @qftgtr , if you agree I can PR you on this.
import React, { Component } from 'react';
import { AppRegistry, View } from 'react-native';
import ARKit from 'react-native-arkit';
export default function RNARKit() {
return (
<View style={{ flex: 1 }}>
<ARKit
style={{ flex: 1 }}
debug
planeDetection
lightEstimation
onPlaneDetected={console.log} // event listener for plane detection
onPlaneUpdate={console.log} // event listener for plane update
/>
<ARKit.Text x={0} y={0} z={0} width={0.1} height={0.1} length={0.1} chamfer={0.01}>
ARKit is cool!
</ARKit.Text>
<ARKit.Sphere x={0.2} y={0} z={0} width={0.1} radius={0.05} />
<ARKit.Plane x={0.4} y={0.4} z={0} width={0.1} height={0.1} />
</View>
);
}
AppRegistry.registerComponent('ReactNativeARKit', () => ReactNativeARKit);
I'm unsure if this is a capability of ARKit, but is it possible to position an object in the scene at a fixed GPS coordinate? If so, what would it take to add support for that to this library?
Use the source
prop to specify the model file would be more consistent to how RN loads images. A few use cases are
<ARKit.Model source={require('path/to/model/file.dae')} />
There is a small difference here when loading images (check here). On iOS, the file extension is not included
<Image source={{uri: 'app_icon'}} />
but on Android, you need to add the asset:/
scheme:
<Image source={{uri: 'asset:/app_icon.png'}} />
I don't know why this is different and wish someone could explain it.
A proposed usage for loading model file in resources folder is,
<ARKit.Model source={{ uri: 'model.dae' }} />
<ARKit.Model source={{ uri: http://your.server.url/model.dae }} />
@macrozone has demonstrated how to load a online model file
https://gist.github.com/macrozone/e20b9f6ab2bf529331e6019efa08e92f
Hey, Thanks for doing this. I pulled the latest from git and try to use addModel function. I added something like this: this.arkit.addModel({ x: 0.5, y: 0.7, z: 0, fontSize: 0.1, depth: 0.05, file: '../../3dAssets/Woola.OBJ' });
but get undefined is not a object
. what's file format should be? Thanks for help!
when I added this package to a new project. it give me a error like this. anyone saw this before?
React/RCTViewManager.h file not found
support arbitrary shapes, e.g. with https://developer.apple.com/documentation/scenekit/scnshape
At creating a release build i get the following error:
No such file or directory: '/Users/felixbader/Library/Developer/Xcode/DerivedData/arTest-fvhvkgbiibenhyajvimoqvcjtjsv/Build/Products/Release-iphoneos/libRCTARKit.a'
Tested with a new project with React-Native 0.47.0 iOS 11 on iPhone 7.
xCode 9
Goal is to have 2d elements like text labels that are always facing you and do or do not scale with the distance (both is useful).
Best way would be that you could just place any <View>
or react-native element and its anchored with a 3d point.
We can do this also outside of react-native-arkit (rna), but rna should provide the api for this:
Add a ARKit.Group that can contain multiple nodes.
at start it should only be to organize multiple elements into one component, but later we can think about allowing position and rotation on that group that will affect every element inside.
After installing on my existing React native app and linking, I get this cryptic crash when I open the view. Here is the log on xcode:
libsystem_kernel.dylib`__abort_with_payload:
0x1855e00a0 <+0>: mov x16, #0x209
0x1855e00a4 <+4>: svc #0x80
-> 0x1855e00a8 <+8>: b.lo 0x1855e00c0 ; <+32>
0x1855e00ac <+12>: stp x29, x30, [sp, #-0x10]!
0x1855e00b0 <+16>: mov x29, sp
0x1855e00b4 <+20>: bl 0x1855c2238 ; cerror_nocancel
0x1855e00b8 <+24>: mov sp, x29
0x1855e00bc <+28>: ldp x29, x30, [sp], #0x10
0x1855e00c0 <+32>: ret
I am using Xcode 9 release and ios 11 release
This would be great to move elements. Maybe there is already a way to animated, but I'm not aware of it.
Hello,
I know that the main purpose on this module is to provide a binding for Apple ARKit but today Google released ARCore and I'm wondering if this module will support it for Android devices (and maybe being renamed) ?
Thanks for your amazing work !
Thanks for your effort in putting the ARKit library for React Native can you please include some example of rendering an object or image would be very helpful.
Can I add text somehow through this library? i.e.
Plane.addText({position..., content: 'example'});
Hello guys, i have a little problem. When i run the application in xcode, the stuff will be loaded but i get the message:
2017-10-19 13:39:10.802068+0200 MyFirstARKitApp[435:65378] [] nw_connection_get_connected_socket 4 Connection has no connected handler
2017-10-19 13:39:10.802115+0200 MyFirstARKitApp[435:65378] TCP Conn 0x1c417b300 Failed : error 0:61 [61]
So the content (shapes,...) cannot be loaded. The camera on the phone works and i get the debug mode with the yellow dots and the coordinate system.
Please can you help me!? :)
Thanks a lot
Hi
i need to load models online and from website
is there any way to that ?
How can I fix this?
I create a new React Native project and install react-native-arkit and link.
When build using xcode - > <ARKit/ARKit.h> file not found.
RCTARKit.m needs to be updated... beta versions of this module worked with the deprecated code, but now it won't build.
Here are the things I mostly changed (commented out is the old code, and below is the code that runs)
//ARSessionConfiguration *configuration = self.session.configuration; ARWorldTrackingConfiguration *configuration = self.session.configuration;
//ARWorldTrackingSessionConfiguration *configuration = self.session.configuration; ARWorldTrackingConfiguration *configuration = self.session.configuration;
//-(ARWorldTrackingSessionConfiguration *)configuration { -(ARWorldTrackingConfiguration *)configuration {
Pretty simple to fix, but just thought I would let you know. There are multiple instances of this happening and if you download Xcode 9GM, you should have all the red errors I did.
I don't have a capable device yet so I'm not able to play around with it, but I want to achieve something similar to this:
Is this possible?
I accidentially mounted an ARKit.Box outside of the ARKit component and did not notice, because it actually works
The reason is, that we only allow one ARKit-scene and its internally a singleton
It still feels a bit odd though ;-) should we restrict mounting these components inside the ARKit-component?
The getCameraPosition
method doesn't seem to return the right values.
const cameraPosition = ARKit.getCameraPosition()
alert(JSON.stringify(cameraPosition))
Result:
I have an iPhone 6s Plus.
I am looking into this, but figured I'd file an issue. If you have ideas or if your camera position works fine, please let me know, because that would be useful.
Would be amazing to have support for DAE or SCN files!
I don't think I have the skills to do this myself, but if anyone publishes anything, I'll see if I can contribute what I can!
Is it possible to rotate models?
It would be great for react-native-arkit to support shadows, which as far as I can tell are not possible yet. Scenekit requires at least one SCNLight node in the scene with castsShadow set to true.
Docs for SCNLight: https://developer.apple.com/documentation/scenekit/scnlight
Imagined implementation: <AR.Light position={{}} castsShadow type={'ambient'}.../>
Hi guys, really thanks for putting this up!
I am trying to work through this and got it working before in xcode 9 beta. however since ios11 and xcode 9 officially rolled out i have not been able to get it to work. specifically, this is what I did (manual linking procedure):
index.ios.js
react code on the README.md of this repo to my index.ios.js
and then when i build, it builds successfully, but the error in xcode is this::
2017-09-28 11:22:28.512648-0400 arkittutorialmanual[10423:1749982] [DYMTLInitPlatform] platform initialization successful
2017-09-28 11:22:29.042 [info][tid:main][RCTCxxBridge.mm:187] Initializing <RCTCxxBridge: 0x1d41b73e0> (parent: <RCTBridge: 0x1d40bd880>, executor: (null))
2017-09-28 11:22:29.044491-0400 arkittutorialmanual[10423:1749870] Initializing <RCTCxxBridge: 0x1d41b73e0> (parent: <RCTBridge: 0x1d40bd880>, executor: (null))
2017-09-28 11:22:29.078 [warn][tid:main][RCTBridge.m:114] Class RCTCxxModule was not exported. Did you forget to use RCT_EXPORT_MODULE()?
2017-09-28 11:22:29.078317-0400 arkittutorialmanual[10423:1749870] Class RCTCxxModule was not exported. Did you forget to use RCT_EXPORT_MODULE()?
2017-09-28 11:22:29.126 [info][tid:main][RCTRootView.m:301] Running application arkittutorialmanual ({
initialProps = {
};
rootTag = 1;
})
2017-09-28 11:22:29.125882-0400 arkittutorialmanual[10423:1749870] Running application arkittutorialmanual ({
initialProps = {
};
rootTag = 1;
})
2017-09-28 11:22:29.132145-0400 arkittutorialmanual[10423:1749870] refreshPreferences: HangTracerEnabled: 0
2017-09-28 11:22:29.132198-0400 arkittutorialmanual[10423:1749870] refreshPreferences: HangTracerDuration: 500
2017-09-28 11:22:29.132225-0400 arkittutorialmanual[10423:1749870] refreshPreferences: ActivationLoggingEnabled: 0 ActivationLoggingTaskedOffByDA:0
2017-09-28 11:22:30.046 [info][tid:com.facebook.react.JavaScript] Running application "arkittutorialmanual" with appParams: {"rootTag":1,"initialProps":{}}. __DEV__ === true, development-level warning are ON, performance optimizations are OFF
2017-09-28 11:22:30.045835-0400 arkittutorialmanual[10423:1750003] Running application "arkittutorialmanual" with appParams: {"rootTag":1,"initialProps":{}}. __DEV__ === true, development-level warning are ON, performance optimizations are OFF
2017-09-28 11:22:30.046 [error][tid:com.facebook.react.JavaScript] Application arkittutorialmanual has not been registered.
Hint: This error often happens when you're running the packager (local dev server) from a wrong folder. For example you have multiple apps and the packager is still running for the app you were working on before.
If this is the case, simply kill the old packager instance (e.g. close the packager terminal window) and start the packager in the correct app folder (e.g. cd into app folder and run 'npm start').
This error can also happen due to a require() error during initialization or failure to call AppRegistry.registerComponent.
i am not running from packager/dev server, so i think this hint doesnt apply. i have also made very very sure that i am calling AppRegistry.registerComponent
correctly. so what else might be the cause of this issue please? thanks.
i tried putting it in ios/3dAssets/
But cant get it to load...
Awesome library btw!
I'm using getCameraPosition. It would be great to also retrieve the camera rotation. Is this possible?
If follow the steps for "mostly automatic installation", I get the following error:
*** Terminating app due to uncaught exception 'RCTFatalException: Unhandled JS Exception: undefined is not an object (evaluating 'i.getCameraPosition')', reason: 'Unhandled JS Exception: undefined is not an object (evaluating 'i.getCamera..., stack:
If I follow the steps for "manual installation" and add libRCTARKit.a to the 'Link Binary With Libraries' configuration, I get the error:
'no such file or directory: (...)/Build/Products/Release-iphoneos/libRCTARKit.a''.
I pulled down the RCTARKit.xcodeproj and it looks like libRCTARKit.a has the error 'React/RCTBridgeModule.h' file not found
would be cool to be able to specify shader (as strings or as template-tags like the awesome https://github.com/gre/gl-react)
E.g.
<ARKit.Box
material={{
shader: GLSL`
uniform float mixLevel = 0.0;
vec3 gray = vec3(dot(vec3(0.3, 0.59, 0.11), _output.color.rgb));
_output.color = mix(_output.color, vec4(gray, 1.0), mixLevel);
`
}} />
or to the whole scene.
https://developer.apple.com/documentation/scenekit/scnshadable
I modified the example to have something like:
<ARKit
style={{flex: 1}}
onPlaneDetected={this.onPlaneDetect}
onPlaneUpdate={this.onPlaneDetect}
//onPlaneDetected={console.log}
//onPlaneUpdate={console.log}
debug // debug mode will show feature points detected and 3D axis
planeDetection // turn on plane detection
lightEstimation // turn on light estimation
/>
where there is code such as below for registering the callback in index.ios.js. But "onPlaneDetect()" doesn't get called even though a plane is detected.
export default class App extends Component {
constructor(props) {
super(props);
this.onPlaneDetect = this.onPlaneDetect.bind(this);
}
onPlaneDetect() {
console.log("!!! onPlaneDetect");
}
Two situations have come up where I need to be able to reset my scene...
Every now and then, for some reason, my ARKit scene just doesn't show up. I exit the application, and it works the next time. Not sure why. But if I had a reset button, the user could tap it at least without thinking the app just doesn't work.
I have a button for resetting the position of the camera. By default, the app loads my scene in front of the user. And this is fine if the user's device is already facing a comfortable position when the app launches, and they stay in that relative area until they are done with the app. But the truth is that they might be on a couch facing straight ahead for awhile, and then want to lay down on their back across the couch, completely changing their position. Or they may be walking somewhere, and the scene gets further and further away. So the user needs a way to reset the scene to be right infront of them again.
Is there a way to accomplish this... or something that could be added? It seems like once a scene is first rendered, the position of everything stays static. For instance, I haven't been able to update ARKit.box positions. I can make them disappear, but not move. So I don't think recalculating the position of the camera vs where the boxes should be next time will work, as their positions will not update.
Testing this out all primitives seem a solid black color instead of being shaded white like they are in the sample image. Is there a missing step in the documentation perhaps to explain how to light shapes?
It is pretty impressive how far this project has come in such a short amount of time. However, it would be great to have one imperative way of constructing 3D scenes. Three.js has been around for quite a while and with projects such as react-native-webgl that mimic a webGL webview API but stream directly to the GraphicLayer ES API, it is possible to create incredible performant 3D experiences in RN.
The expo team as done a very simple and straight forward ARKit implementation by translating the phones AR-Position to the camera position within three js. See here: https://blog.expo.io/introducing-expo-ar-mobile-augmented-reality-with-javascript-powered-by-arkit-b0d5a02ff23
Try the snack here with the expo app for performance testing: https://snack.expo.io/Hk1C_YqjW (don't forget: you need an iPhone SE, IPhone 6S or higher)
While the declarative way of adding shapes and models is great, as soon we would wish to create more abstract scenes (animations, interactions, physics etc.) this project would face a lot of replication without gaining much more surface area.
Provide an API/Container that can hold a three.js instance which scene is feed with
Doing so would make scene creation much simpler (three.js has years worth of tutorials) while dropping sources of bugs in the library and making i.e. the integrating of ARCore and other solutions much simpler. Lastly, this allows developers to re-use the scene code (basically three.js) on the web and none AR enabled devices (fallback).
Performance is of course a challenge — but as the GL-GPU layer is directly tapped — I wanted to put this out here.
Hi there,
In my project I show a text that displays all information from a detected plane using the function onPlaneDetected
of the ARKit
component.
Is there a way to display the plane somehow?
Thanks in advance.
Cheers,
Tom
Planes are being added to the scene that move around for no reason. I think it's due to
- (void)renderer:(id <SCNSceneRenderer>)renderer didAddNode:(SCNNode *)node forAnchor:(ARAnchor *)anchor
in RCTARKit.m
Planes being detected should be fine, but this should be able to be disabled, as well as planes not being rendered.
I've tried breakpointing all of the ARSCNViewDelegate methods:
didAddNode
willUpdateNode
didUpdateNode
didRemoveNode
And none of them are running. None of the NSLog
messages are appearing either.
If ARKit is unmounted and remounted, it does not lose information about planes detected internally. But if you are using onPlaneDetected and onPlaneUpdate to visualize the planes detected, you won't get notified anymore.
We therefore should call onPlaneDetected on component mount for any plane that has been detected in the past (already merged with all updates).
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.