warrenm / gltfkit2 Goto Github PK
View Code? Open in Web Editor NEWA glTF 2.0 asset loader and exporter for Objective-C and Swift.
License: MIT License
A glTF 2.0 asset loader and exporter for Objective-C and Swift.
License: MIT License
I'm not quite sure how GLTF morpher target values are defined vs. SceneKit SCNMorpher, but when the attached model GLB file is loaded, it generates multiple failure messages (one for each morpher?). When I change the mode to SCNMorpherCalculationModeNormalized in covertAsset, the errors go away, though I'm not sure yet whether I'm getting a correct SCNMorpher.
2021-12-29 14:05:31.705476-0800 Timebox[52389:4128485] [SceneKit] Unreachable code: additive without provided normals is not supported
2021-12-29 14:05:31.705560-0800 Timebox[52389:4128485] [SceneKit] Unreachable code: additive without provided normals is not supported
2021-12-29 14:05:31.705596-0800 Timebox[52389:4128485] [SceneKit] Unreachable code: additive without provided normals is not supported
2021-12-29 14:05:31.705625-0800 Timebox[52389:4128485] [SceneKit] Unreachable code: additive without provided normals is not supported
...
I'm currently lost on how to embed this framework in my project. It's a project, not a .framework or xcframework, so I'm a little lost. Would be such a great help to have support for Swift Package Manager.
Kind regards
I have been using your previous GLTFKit library in an ARKit app on iOS, and it has been working great! I just found this updated version and I'm interested in trying it out.
However, it is unclear if this is designed to work on iOS or only macOS. I noticed this PR: #7 which claims to add iOS support by using UIImage over NSImage. I've pulled that PR locally and am running into another issue when I try to load a GLB file:
2021-08-20 09:46:07.761838+1200 pbr_test[12832:4227191] -[MDLTextureSampler copyWithZone:]: unrecognized selector sent to instance 0x282b36f10
2021-08-20 09:46:07.762520+1200 pbr_test[12832:4227191] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[MDLTextureSampler copyWithZone:]: unrecognized selector sent to instance 0x282b36f10'
*** First throw call stack:
(0x1a4adf25c 0x1b8874480 0x1a49ee278 0x1a4ae18b8 0x1a4ae385c 0x101336cb8 0x1013360a0 0x100f76578 0x100f76324 0x100f76640 0x10131f20c 0x10131eb00 0x101383ae8 0x10138532c 0x101387fd0 0x10138743c 0x101396e1c 0x10139773c 0x1ecf81580 0x1ecf8486c)
libc++abi: terminating with uncaught exception of type NSException
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[MDLTextureSampler copyWithZone:]: unrecognized selector sent to instance 0x282b36f10'
terminating with uncaught exception of type NSException
Details:
Is there any example of How to use GLTFDracoMeshDecompressor in swift ?
need more explanation with example
Hi, it gives an error and crashes the application when using this model
Error:
Assertion failed: (accessor.sparse.indexComponentType == GLTFComponentTypeUnsignedShort || accessor.sparse.indexComponentType == GLTFComponentTypeUnsignedInt), function GLTFSCNPackedDataForAccessor, file GLTFSceneKit.m, line 321.
Model:
avatar_1705565985793.glb.zip
Any thoughts on what it would take to provide RealityKit support? This would be useful for ARKit development.
The attached Fox.glb file does not display correctly in GLTFViewer.
Displays OK in https://gltf-viewer.donmccurdy.com
The attached Velociraptor.glb model file (converted from FBX via Sketchfab) does not display the Body_Mat correctly in SceneKit with either GLTF Viewer or our app. The model material is displayed as a mottled gray via SceneKit but it displays correctly in babylonjs.com, gltf-viewer.donmccurdy.com and Gestaltor. Sorry, but I haven't investigated it in any detail to determine what might be the problem.
At the end of April, after the latest version of Apple submitted for review, Apple restored a warning email, which does not block the review at present. According to the official warning, it will be used as a condition for blocking the review around May. We hope to deal with the warning problem before May.
According to Apple's May 1 Privacy Policy, if you use the API in your app's code, you need to report the API in the app's privacy manifest file. If you use the API in the code of a third party SDK, you will need to report the API in the privacy manifest file of the third party SDK.
Since we use Swift packages to reference the GLTFKit2 framework in our app, but I can't see which interfaces need to handle Apple's privacy policy in the dynamic library, I hope the author can check the interfaces in the implementation code. Then add the PrivacyInfo.xcprivacy file.
v0.5.7
Swift packages
Although submission for App Store review was successful, you may want to correct the following issues in your next submission for App Store review. Once you've corrected the issues, upload a new binary to App Store Connect.
ITMS-91053: Missing API declaration - Your app’s code in the “FOURTRY” file references one or more APIs that require reasons, including the following API categories: NSPrivacyAccessedAPICategoryDiskSpace. While no action is required at this time, starting May 1, 2024, when you upload a new app or app update, you must include a NSPrivacyAccessedAPITypes array in your app’s privacy manifest to provide approved reasons for these APIs used by your app’s code. For more details about this policy, including a list of required reason APIs and approved reasons for usage, visit: https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api.
ITMS-91053: Missing API declaration - Your app’s code in the “FOURTRY” file references one or more APIs that require reasons, including the following API categories: NSPrivacyAccessedAPICategorySystemBootTime. While no action is required at this time, starting May 1, 2024, when you upload a new app or app update, you must include a NSPrivacyAccessedAPITypes array in your app’s privacy manifest to provide approved reasons for these APIs used by your app’s code. For more details about this policy, including a list of required reason APIs and approved reasons for usage, visit: https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api.
ITMS-91053: Missing API declaration - Your app’s code in the “FOURTRY” file references one or more APIs that require reasons, including the following API categories: NSPrivacyAccessedAPICategoryFileTimestamp. While no action is required at this time, starting May 1, 2024, when you upload a new app or app update, you must include a NSPrivacyAccessedAPITypes array in your app’s privacy manifest to provide approved reasons for these APIs used by your app’s code. For more details about this policy, including a list of required reason APIs and approved reasons for usage, visit: https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api.
ITMS-91053: Missing API declaration - Your app’s code in the “FOURTRY” file references one or more APIs that require reasons, including the following API categories: NSPrivacyAccessedAPICategoryUserDefaults. While no action is required at this time, starting May 1, 2024, when you upload a new app or app update, you must include a NSPrivacyAccessedAPITypes array in your app’s privacy manifest to provide approved reasons for these APIs used by your app’s code. For more details about this policy, including a list of required reason APIs and approved reasons for usage, visit: https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api.
Apple Developer Relations
We hope to get a clear reply and solution as soon as possible, so that we can deal with the review of Apple's shelves in May. Thank you.
Hello!
Is it possible to change the bone directions when importing a glb file?
It seems like other GLTF loaders are able to do that. Tested with ThreeJS and it works correctly.
Our glbs are exported using Maya which seems to expect the glb loader to sort the bones different.
If I import the glb using blender and select "Temperance" it seems to fix the issue.
Temperance | Default |
---|---|
![]() |
![]() |
My fork that reproduce the issue: https://github.com/daninils/GLTFKit2/tree/bone-direction-example
I put the KHR_materials_transmission model into the GLTFViewer. The display is strange, and different from Babylon.
Does GLTFKit2 now support this feature?
The link of the model is below:
https://github.com/KhronosGroup/glTF-Sample-Models/blob/master/2.0/TransmissionTest/glTF-Binary/TransmissionTest.glb
Hi, I'm facing this problem.
This is how the model should look like:
Model - https://cdn.web-ar.studio/templates/3d_models/was/holidays/Christmas%20Ball/Christmas%20Ball.glb
Hi, I've been experiencing a crash every time I try to load this asset:
https:/firebasestorage.googleapis.com/v0/b/gains-dev-4043d.appspot.com/o/artwork%2Fspatial%2Fexercises%2FLeg%20Press.glb?alt=media&token=5f564d93-fd66-45e2-8683-c6baa3521964
Logs:
Assertion failed: (accessor.sparse.indexComponentType == GLTFComponentTypeUnsignedShort || accessor.sparse.indexComponentType == GLTFComponentTypeUnsignedInt), function GLTFSCNPackedDataForAccessor, file GLTFSceneKit.m, line 341.
Would it be possible to support KHR_texture_basisu?
Hi, I decided to give the loader a try and was using this model: https://www.dropbox.com/scl/fi/nc2q0to7ch3d4va0nuf4n/stegosaurs_SStenops.glb?rlkey=x9mucmy17gdu8hyuh5w183ek9&dl=0 .
I previously tested the same model with GLTFKit 1.0 and the animations were intact but with the 2.0 I'm not able to play the animations. I switched the model and used another one that contains mixamo animations( https://www.dropbox.com/scl/fi/4v7tttow564c5xb73m8t3/tparc.glb?rlkey=npycsj58wpdzsa1peh5m0kv0e&dl=0 ) but didn't have much luck with that either. Can you please take a look and let me know if I'm missing something here?
We're getting regular crashes from our app users. Unfortunately, because Apple supplies such minimal crash reports, we don't have a lot to go on, but the backtraces all look the same and point to line 430 in GLTFAssetReader. I've looked at the code and I'm not sure if it could use some additional validity checks or something like that. I can provide more .crash files if you'd like, but they all appear nearly identical.
Last Exception Backtrace:
0 CoreFoundation 0x1a68fc870 __exceptionPreprocess + 164 (NSException.m:249)
1 libobjc.A.dylib 0x19ec6fc00 objc_exception_throw + 60 (objc-exception.mm:356)
2 Foundation 0x1a582b374 NSAllocateMemoryPages + 184 (NSPlatform.m:1865)
3 Foundation 0x1a57ddddc -[_NSPlaceholderData initWithBytes:length:copy:deallocator:] + 132 (NSData.m:241)
4 Foundation 0x1a57de7f4 +[NSData(NSData) dataWithBytes:length:] + 40 (NSData.m:773)
5 GLTFKit2 0x1035a4230 -[GLTFAssetReader convertBuffers] + 144 (GLTFAssetReader.m:430)
6 GLTFKit2 0x1035a8f68 -[GLTFAssetReader convertAsset:] + 972 (GLTFAssetReader.m:1255)
7 GLTFKit2 0x1035a39e8 -[GLTFAssetReader syncLoadAssetWithURL:data:options:handler:] + 860 (GLTFAssetReader.m:412)
8 GLTFKit2 0x1035a3464 __52+[GLTFAssetReader loadAssetWithURL:options:handler:]_block_invoke + 48 (GLTFAssetReader.m:345)
9 libdispatch.dylib 0x1ae7cb6a8 _dispatch_call_block_and_release + 32 (init.c:1530)
10 libdispatch.dylib 0x1ae7cd300 _dispatch_client_callout + 20 (object.m:561)
11 libdispatch.dylib 0x1ae7d07b8 _dispatch_continuation_pop + 600 (queue.c:306)
12 libdispatch.dylib 0x1ae7cfdd4 _dispatch_async_redirect_invoke + 584 (queue.c:830)
13 libdispatch.dylib 0x1ae7debe4 _dispatch_root_queue_drain + 392 (queue.c:7051)
14 libdispatch.dylib 0x1ae7df3ec _dispatch_worker_thread2 + 156 (queue.c:7119)
15 libsystem_pthread.dylib 0x210201928 _pthread_wqthread + 228 (pthread.c:2642)
16 libsystem_pthread.dylib 0x210201a04 start_wqthread + 8 (:-1)
2024-01-11_21-10-05.6334_-0600-ec7d7cd927f2a400a6eb081bd78ccd3246c0505b.txt
This is GLTFKit
issue and haven't tried GLTFKit2
yet but I have a feeling (quick search didn't find the fix) this project will be suffering from the same issue too and since this one is the newer I am creating issue here.
The issue is that according to glTF spec:
When a mesh primitive uses any triangle-based topology (i.e., triangles, triangle strip, or triangle fan), the determinant of the node’s global transform defines the winding order of that primitive. If the determinant is a positive value, the winding order triangle faces is counterclockwise; in the opposite case, the winding order is clockwise.
I have tried GLTFKit with unit_cube.zip model to show the issue. You will see an inside out cube.
Thanks to the KHR_materials_anisotropy
extension and cgltf v1.14, we have first-class support for anisotropy in the GLTFAsset
API, but this isn't yet wired up in RealityKit material import.
The task is to figure out how to map the extension's anisotropy_strength
and anisotropy_rotation
properties (and texture) onto RealityKit's PhysicallyBasedMaterial.AnisotropyLevel
and PhysicallyBasedMaterial.AnisotropyAngle
and implement the feature in the RealityKit converter.
Possible to copy the pose of one rig to another, assuming it is an identical copy?
It seems like synchronous asset loading is failing with some kind of exception.
I apologize that I cannot seem to get more info. I can't locate an error code or a very helpful backtrace to include. I have an exception handler (do / catch in Swift) which is being invoked, but error is nil. Let me know if this is useful or if I should continue to look for more info.
* thread #13, queue = 'com.metalbyexample.gltfkit2.asset-loader'
frame #0: 0x00000001ae4c6538 libsystem_kernel.dylib`read + 8
frame #1: 0x00000001af46a840 Foundation`_NSReadFromFileDescriptorWithProgress + 236
frame #2: 0x00000001af462c94 Foundation`_NSReadBytesFromFileWithExtendedAttributes + 764
frame #3: 0x00000001af476b30 Foundation`-[NSData(NSData) initWithContentsOfFile:] + 100
frame #4: 0x00000001af4ff750 Foundation`+[NSData(NSData) dataWithContentsOfURL:] + 40
* frame #5: 0x0000000102132e20 GLTFKit2`-[GLTFAssetReader syncLoadAssetWithURL:data:options:handler:](self=0x00006000016f8360, _cmd="syncLoadAssetWithURL:data:options:handler:", assetURL=@"file:///Users/lenkawell/Library/Containers/com.pepper.timebox/Data/Library/Application%20Support/TimeboxUserModels/18CEBA0C-8D2E-4366-8238-E844E5A2B347-Len%20avatar.glb", data=0x0000000000000000, options=0x0000000207722760, handler=0x000000010214e77c) at GLTFAssetReader.m:251:36
frame #6: 0x00000001021328b8 GLTFKit2`__52+[GLTFAssetReader loadAssetWithURL:options:handler:]_block_invoke(.block_descriptor=0x000060000463d340) at GLTFAssetReader.m:207:9
frame #7: 0x00000001023dfff0 libdispatch.dylib`_dispatch_call_block_and_release + 32
frame #8: 0x00000001023e1d24 libdispatch.dylib`_dispatch_client_callout + 20
frame #9: 0x00000001023e5694 libdispatch.dylib`_dispatch_continuation_pop + 816
frame #10: 0x00000001023e458c libdispatch.dylib`_dispatch_async_redirect_invoke + 696
frame #11: 0x00000001023f9a0c libdispatch.dylib`_dispatch_root_queue_drain + 408
frame #12: 0x00000001023fa640 libdispatch.dylib`_dispatch_worker_thread2 + 196
frame #13: 0x0000000102197ed8 libsystem_pthread.dylib`_pthread_wqthread + 228
Hello @warrenm - we're looking for a way to export an SCNScene to gltf/glb formats.
According to the readme:
GLTFKit2 is an efficient glTF loader and exporter for Objective-C and Swift.
But it looks like an objective-c wrapper for the "exporter" part of cgltf has not been implemented yet.
Do you have plans to implement soon and/or are you looking for contributions?
PS: Really enjoyed your Metal by Example material!
Would it be possible to support glb/gltf files that are compressed using Draco?
The problem with transparency of the model and similar to it, as far as I understand when using metacity on a transparent element makes it opaque and fills it. You wrote a solution for a specific model, but unfortunately we have different models coming in and we would like to correct this at the conversion stage. Is there any way to solve this?
node.enumerateChildNodes { child, _ in if child.name == "glass" { child.opacity = 0.568 child.geometry?.firstMaterial?.transparencyMode = .dualLayer } }
This helped solve the problem, but only for a specific model unfortunately...
Would love to understand what I would need to understand to probably contribute to addition of KHR_mesh_quantization
support.
I'm new to Obj-c and swift and iOS ecosystem in itself.
Is there any timeline to implement the animation in RealityKit version of project
Loading certain GLB files via GLTFRealityKitLoader into a RealityView scene on visionOS is resulting in bad rendering
GLB Samples:
tank.glb.zip
More samples providable upon request, GitHub attachments max at 25mb
Loading the attached Megan.glb does not display correctly in GLTFViewer.
Works OK in https://gltf-viewer.donmccurdy.com
This issue tracks the compiler warning summarized in the title, which occurs when building the GLTFKit2 framework (or XCFramework) for Mac Catalyst. It is believed to be a bug in Xcode 15. This issue is not currently blocking binary releases of the project.
When exporting a .glb from blender I am coming across the issue of the material being extremely metallic See image 1
In the first version of GLTFKit it seems to be working. image 2
It also seems to be working in the online gltfviewer image 3
Any advice on what might be wrong?
p.s here is the blender material node
I'm having an issue loading a GLB file that is compressed with Meshopt (EXT_meshopt_compression).
It is crashing on the load step.
Would it be possible get support for loading these files (similar to Draco)?
If not, is there a way to check if a compression is used on a GLB file so I can pop up an alert saying "unsupported"?
Thanks in advance for any support.
Reason: tried: '/Users//Library/Developer/Xcode/DerivedData/GLTFKit2-hjeduxuqrgncgqaweyjkstyyxmlt/Build/Products/Debug/GLTFKit2.framework/Versions/A/GLTFKit2' (code signature in <30041B46-B48F-3C9E-ADC3-85F3133B3B6B> '/Users//Library/Developer/Xcode/DerivedData/GLTFKit2-hjeduxuqrgncgqaweyjkstyyxmlt/Build/Products/Debug/GLTFKit2.framework/Versions/A/GLTFKit2' not valid for use in process: mapping process has no Team ID and is not a platform binary), '/usr/lib/swift/GLTFKit2.framework/Versions/A/GLTFKit2' (no such file), '/Users//Library/Developer/Xcode/DerivedData/GLTFKit2-hjeduxuqrgncgqaweyjkstyyxmlt/Build/Products/Debug/glTF Viewer.app/Contents/MacOS/../Frameworks/GLTFKit2.framework/Versions/A/GLTFKit2' (code signature in <30041B46-B48F-3C9E-ADC3-85F3133B3B6B> '/Users//Library/Developer/Xcode/DerivedData/GLTFKit2-hjeduxuqrgncgqaweyjkstyyxmlt/Build/Products/Debug/glTF Viewer.app/Contents/Frameworks/GLTFKit2.framework/Versions/A/GLTFKit2' not valid for use in process: mapped file has no Team ID and is not a platform binary (signed with custom identity or adhoc?)), '/usr/lib/swift/GLTFKit2.framework/Versions/A/GLTFKit2' (no such file), '/Users//Library/Developer/Xcode/DerivedData/GLTFKit2-hjeduxuqrgncgqaweyjkstyyxmlt/Build/Products/Debug/glTF Viewer.app/Contents/MacOS/../Frameworks/GLTFKit2.framework/Versions/A/GLTFKit2' (code signature in <30041B46-B48F-3C9E-ADC3-85F3133B3B6B> '/Users//Library/Developer/Xcode/DerivedData/GLTFKit2-hjeduxuqrgncgqaweyjkstyyxmlt/Build/Products/Debug/glTF Viewer.app/Contents/Frameworks/GLTFKit2.framework/Versions/A/GLTFKit2' not valid for use in process: mapped file has no Team ID and is not a platform binary (signed with custom identity or adhoc?)), '/Library/Frameworks/GLTFKit2.framework/Versions/A/GLTFKit2' (no such file), '/System/Library/Frameworks/GLTFKit2.framework/Versions/A/GLTFKit2' (no such file)
func convert(mesh gltfMesh: GLTFMesh, context: GLTFRealityKitResourceContext) throws -> RealityKit.ModelComponent? {
let meshDescriptorAndMaterials = try gltfMesh.primitives.compactMap {
if let meshDescriptor = try self.convert(primitive: $0, context:context) {
let material = try self.convert(material: $0.material, context: context)
return (meshDescriptor, material)
}
// If we fail to create a mesh descriptor for a primitive, omit it from the list.
return nil
}
Generic parameter 'ElementOfResult' could not be inferred
I think the example is to load a GLB model. Can I load a GLTF model? When I use a GLB model, I always don't load texture images, or is there any online tool that can provide the conversion of a GLTF model to a GLB model
Could you please add Mac Catalyst to your list of Supported Destinations in the Xcode project? It works fine and it would make pulling changes just a little easier. Thanks!
I hope this message finds you well. I'm currently using your library GLTFKit2 in my iOS application, and I'm seeking clarification regarding its privacy implications.
As part of Apple's requirement for iOS applications, it's essential to ensure compliance with privacy guidelines and to be transparent with users about any data collection or usage. Thus, I'd like to inquire about whether GLTFKit2 collects any user data or accesses sensitive user information.
More info: Privacy Manifest
Request for Clarification:
Could you please provide clarification on the any privacy implications of using GLTFKit2. Any insights or guidance you can offer would be greatly appreciated.
Thank you for your attention to this matter. I look forward to your response.
I’ve run into a problem using SCNView.hitTest() with some GLTF models auto-converted by Sketchfab.com and loaded into a SceneKit scene with GLTFSCNSceneSource().
The models load and render just fine. The problem is that, using default options, SCNView.hitTest() is not returning any hits when passed a location that is correctly on a model node geometry. Hit test works fine with other GLTF and GLB models, including USD, SCN, etc. Just these models seem to be a problem.
I’ve tried debugging it and analyzing the GLTF geometry and materials when loaded into SceneKit but I don’t can’t see what’s wrong.
If I change the hitTest options to be [.boundingBoxOnly: true] it will correctly return hits, but using the bounding box for all tap handling and selection is too coarse and not really usable. I’ve tried many other SCNHitTestOption option settings and have not found any others that work for these models.
For example, this never returns a hit on a Sketchfab-converted GLTF model node:
@objc func handleTapGesture(_ tap: UITapGestureRecognizer) {
if tap.state != .ended {return}
let options: [SCNHitTestOption : Any] = [.searchMode: SCNHitTestSearchMode.closest.rawValue]
let hits = sceneView.hitTest(tap.location(in: sceneView), options: options)
However, replacing the options with this will correctly return hits:
let options: [SCNHitTestOption : Any] = [.searchMode: SCNHitTestSearchMode.closest.rawValue, .boundingBoxOnly: true]
I’ve attached an example Sketchfab GLTF model (zipped folder) that fails (CC). I've also attached a zipped .glb of it that I edited with Gestaltor to remove the animation, but it still fails the same way.
Hello,
I was trying to load a simple model that supports EXT_mesh_gpu_instancing
, as can be seen in SimpleInstancing model.
Also, found out that there are at two fixes related to this from cgltf
#185 and #216.
I applied those fixes, then tried to load the model again, but what I see is this instead:
However, the model can be loaded normally in three-gltf-viewer, as can be seen here:
Any idea what's wrong, and what could be done to load and render the same model?
When adding transparency to the model, it does not work..
After recent updates, this model started dropping app...
In gltfViever it also gives an error
Uploading CiroModel.glb.zip…
I have compiled draco by using “$ cmake ../ -G Xcode” .
And I also got “libdraco.a” from Debug folder,and put libdraco.a into the Xcode
But xcode show "Library not found for -ldraco", Would you mind helping me?
Hi! Im starting to work on my metal renderer and I want to use gltf as my main format.
I'm new to the swift but as far as I can see, Apple promoting swift package manager for handling dependencies.
Is this package manager is something that can be also integrated into GLTFKit2 to use it as a dependency?
I can take a look if you are would like to merge integrate changes in the future.
We are trying to access all vertex positions of geometry to show Highlight point on them
could you share example of how to assess geometry vertex positions
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.