Need help with ShadowEditor?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

1.1K Stars 189 Forks MIT License 5.6K Commits 5 Opened issues


Cross-platform 3D scene editor based on three.js, golang and mongodb for desktop and web.

Services available


Need anything else?

Contributors list

# 34,438
5493 commits

Shadow Editor

English / 中文    |    Windows Desktop    |    Ubuntu Desktop    |    Web Demo

image image image image image image image

  • Name: Shadow Editor
  • Version: v0.6.0 (Coming Soon)
  • Description: Cross-platform 3D scene editor based on three.js, golang and mongodb.
  • Source: GitHub Gitee | Document: Gitee | Demo: GitHub Gitee | Video: Weibo Bilibili | Assets: BaiduNetdisk(rfja)
  • Technology Stack: html, css, javascript, rollup, react.js, webgl, three.js, golang, mongodb, nodejs, electron, protocol buffers.
  • If helpful to you, please DOnate to support us. thank you!

v0.6.0 is Coming Soon

  1. Fix the bug that creates a new mongo connection when request.
  2. Check VR in the status bar to enable VR.
  3. Set scene transform.
  4. How to popup a window when click an object:
  5. You can enable
    in the
  6. Add event in the mobile browser to the script:
  7. Upgrade
    to the newest version, and may cause a lot of bugs.
  8. Add VR event to the script:
  9. VR all-in-one handle controller supports, for example: htc vive.
  10. Fix the bug of deleting script.
  11. Fix a bug that
    can not be serialized due to the upgrade of
  12. Add material
    parameter visualization settings to solve the problem of depth conflict.
  13. Fix a bug that component in mesh cannot save the

v0.5.10 has Released

  • Release Date: October 17, 2020
  • Update Logs:
  1. Remove all GIS related features, and no longer provide GIS in the open source version in the future.

Feature List

  • [x] General
    • [x] Cross-platform
    • [x] Windows, Linux, Mac
    • [x] Desktop, Web
    • [x] Multi-language support
    • [x] English、中文、繁體中文、日本語、한국어、русский、Le français
    • [x] Assets management
    • [x] scene, mesh, texture, material, audio, animation, screenshot, video, typeface
    • [x] Authority management
    • [x] organization, user
    • [x] role, authority
    • [x] registration, login, password modification
    • [x] Version management
    • [x] Scene history and logs
    • [x] undo, redo, auto saving
    • [x] Player
    • [x] play animations in the scene in real time, and can play full screen and in new window
    • [x] Settings
    • [x] Display, renderer, helpers, filter, weather, control mode, select mode, add mode, language
  • [x] Small scene editing
    • [x] Add mesh
    • [x] 3ds, 3mf, amf, assimp, awd, babylon, binary, bvh, collada, ctm
    • [x] draco, fbx, gcode, gltf, glb, js, kmz, lmesh, md2, pmd, pmx
    • [x] nrrd, obj, pcd, pdb, ply, prwm, sea3d, stl, vrm, vrml, vtk, X
    • [x] Built-in objects
    • [x] group
    • [x] plane, cube, circle, cylinder, sphere, icosahedron, torus, torus knot, teapot, lathe
    • [x] unscaled text, 3D text
    • [x] line segments, CatmullRom curve, quadratic Bezier curve, cubic Bezier curve, ellipse curve
    • [x] point marks
    • [x] arrow helper, axes helper
    • [x] sprite
    • [x] Built-in lights
    • [x] ambient light, directional light, point light, spotlight, hemispherical light, rect area light
    • [x] point light, hemispherical light, rect area light helper
    • [x] Built-in components
    • [x] background music, particle emitter
    • [x] sky, fire, water, smoke, cloth
    • [x] berlin terrain, sky sphere
    • [x] Materials editing
    • [x] LineBasicMaterial, LineDashedMaterial, MeshBasicMaterial, MeshDepthMaterial, MeshNormalMaterial
    • [x] MeshLambertMaterial, MeshPhongMaterial, PointsMaterial, MeshStandardMaterial, MeshPhysicalMaterial
    • [x] SpriteMaterial, ShaderMaterial, RawShaderMaterial
    • [x] Post-processing
    • [x] After-image, bokeh, dot screen, FXAA, glitch
    • [x] halftone, pixel, RGB shift, SAO
    • [x] SMAA, SSAA
    • [x] SSAO, TAA
    • [x] Text editing
    • [x] javascript editing with intelligence
    • [x] shader editing
    • [x] json file editing
    • [x] Mesh export
    • [x] gltf、obj、ply、stl、Collada、DRACO
    • [x] Scene publishment
    • [x] Publish scene as static resources, and can be embedded in iframe
    • [x] Examples
    • [x] Arkanoid, camera, particle, ping pong, shader
    • [x] General tools
    • [x] Select, pan, rotate, zoom
    • [x] Perspective view, front view, side view, top view, wireframe mode
    • [x] Screenshot, record
    • [x] Draw point, draw line, draw polygon, spray
    • [x] Measure distance
    • [ ] Others
    • [x] VR:cardboard, htc vive, chrome, firefox
    • [ ] Bullet physics engine
    • [ ] Ray tracing rendering, voxel rendering
    • [ ] UV unwrap
    • [ ] Automatic pathfinding
    • [ ] Batch rendering
    • [ ] Occlusion culling
    • [ ] Split screen display
  • [ ] Data visualization
    • [ ] UI
    • [ ] Panel, tab panel
    • [ ] Button, radio, checkbox, dropdown, slider
    • [ ] Data table
    • [ ] Charts
    • [ ] Histogram
    • [ ] Pie chart
    • [ ] Line chart
    • [ ] Visualization config
    • [ ] Layout management
    • [ ] data source config
    • [ ] Real-time data
    • [ ] WebSocket
    • [ ] Ajax


  1. MongoDB v3.6.8+
  2. Chrome 81.0+ or ​​Firefox 75.0+

The following is only required when you want to build from source.

  1. Golang 1.14.2+
  2. NodeJS 14.1+
  3. gcc 9.3.0+ (
    on Windows, and make sure
    can be accessed through the command line)
  4. git 2.25.1+

Note: The version number is for reference only.

Download and Compile

You can use git to download the source code.

git clone

In China,

is really slow, you can use
git clone

Build on both Windows and Ubuntu

Web Version:

  1. If you are in
    , run
    npm run set-proxy
    to set golang and nodejs proxy.
  2. Run
    npm install
    to install nodejs dependencies.
  3. Run
    npm run build
    to build the server and web.
  4. Edit
    , and modify the mongodb host and port.
  5. Run
    npm start
    to launch the server. You can now visit:
  6. If you enable
    in the config file. Please visit:

Desktop Version:

  1. Download
    and unzip it in the
  2. Build web version.
  3. Run
    npm run build-desktop
    to build a desktop app in the folder

Install as Windows Service

  1. Open
    in the
    folder as administrator.
  2. Run
    .\ShadowEditor install
    to install ShadowEditor as a service.
  3. Run
    .\ShadowEditor start
    to start ShadowEditor service.
  4. Now you can visit:
  5. You can also manage this service in the
    Windows Services Manager

Install as Ubuntu Service

  1. Edit
    , set the right path.
  2. Run
    sudo cp ./scripts/service_linux/shadoweditor.service /etc/systemd/system/
  3. Run
    sudo systemctl daemon-reload
    to reload the service daemon.
  4. Run
    sudo systemctl start shadoweditor
    to start service.
  5. Run
    sudo systemctl enable shadoweditor
    to auto start service.

Command Line Usage

PS E:\github\ShadowEditor\build\> .\ShadowEditor
ShadowEditor is a 3D scene editor based on three.js, golang and mongodb.
This application uses mongodb to store data.

Usage: ShadowEditor [command]

Available Commands: debug Debug service on Windows
help Help about any command
install Install service on Windows serve Start server start Start service on Windows stop Stop service on Windows version Print the version number

Flags: --config string config file (default "./config.toml") -h, --help help for ShadowEditor

Use "ShadowEditor [command] --help" for more information about a command.

Development Guide

  1. Download and install
    Visual Studio Code
  2. It is recommended to install the following VSCode extensions which may be helpful.
ESLint, Go, Shader languages support for VS Code, TOML Language Support.

npm scripts usage:

npm install:            install nodejs dependencies.
npm run build:          build the server and web client.
npm run build-server:   build only the server. (For development)
npm run build-web:      build only the web client. (For development)
npm run build-desktop:  build the desktoop version.
npm run dev:            build the web client automatically when files changes.(For development)
npm run copy:           Copy assets from web folder to build folder.
npm run start:          start the web server.
npm run set-proxy:      set golang and nodejs proxy. (In China only)
npm run unset-proxy:    unset golang and nodejs proxy.
npm run install-dev:    install golang development tools.
npm run eslint:         check js files and fix errors automatically.
npm run clean:          delete the web and desktop builds.
npm run clear:          delete useless nodejs packages.


Expand to view details

ShadowEditor is a project for both users and developers. You can contribute and try you idea on this project. No pension, but a lot of fun. To contribute, you should:

  1. Fork the repository.
  2. Create Feat_xxx branch.
  3. Commit your code.
  4. Create Pull Request.

Note: DO NOT submit large binaries, or the Pull Request may be rejected. If required, you can add the files or directories to be ignored to the .gitignore file.

Frequently Asked Questions

Expand to view details
  1. Failed when upload models.

You need to compress the model assets into a zip file, and the entry file cannot be nested in a folder. The server will decompress and put it in the ./build/public/Upload/Model folder, and add a record in the MongoDB _Mesh collection.

  1. How to combine multiple models together?

Basic geometry supports multiple levels of nesting. You can add a group (in the geometry menu), and then drag multiple models onto the group in the Hierachy Panel.

  1. How to enable authority?

Edit config.toml and set authority.enabled to true. The default administrator username is admin and the password is 123456.

  1. The brower report asm.js has been disabled because the script debugger is connected. Please disconnect the debugger to enable asm.js. Error.

Complete error: asm.js has been disabled because the script debugger is connected. Please disconnect the debugger to enable asm.js. ammo.js (1,1) SCRIPT1028: SCRIPT1028: Expected identifier, string or number ShadowEditor.js (3948,8) SCRIPT5009: 'Shadow' is not defined.

Solution: Tencent browser does not support ammo.js (WebAssembly) compiled with Emscripten, it is recommended to use Chrome or Firebox instead.

  1. How can I upgrade from C# to golang version?

The data structure and web client is not changed, just copy ./ShadowEditor.Web/Upload/ folder to build/public/Upload/.

  1. The desktop version cannot be opened.

Windows requires Visual C++ Redistributable for Visual Studio 2015. You can install from:
If the desktop version cannot be opened, you can view logs.txt; if the port conflicts, you can modify the MongoDB and website ports in resources/app/config.toml.

  1. How can I create a https certificate?

Install openssl, and git client already contains one; Open cmd, Powershell or shell, and run the following commands:

openssl genrsa -out privatekey.pem 1024
openssl req -new -key privatekey.pem -out certrequest.csr
openssl x509 -req -in certrequest.csr -signkey privatekey.pem -out certificate.pem

Among the generated files, certificate.pem is the certificate, and privatekey.pem is the key.


MIT License

Open Source Projects

Expand to view details

Thanks to the following open source projects.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.