English / 中文
- Name: Shadow Editor
- Version: v0.5.4(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
- Technology Stack: html, css, javascript, rollup, react.js, webgl, three.js, golang, mongodb.
- If helpful to you, please DOnate to support us. thank you!
- Create Windows desktop application with
Electron
, Click to see detail.
Download URL: https://github.com/tengge1/ShadowEditor/releases/download/v0.5.3/ShadowEditor-win32-x64.zip
- Release Date: June 14, 2020
- Update Logs:
- Fix bugs of uploading models and publishing scenes on windows.
- Add links to open source projects.
- THREE.js math module has translated into golang, Click for detail.
- Use Travis CI as a continuous integration tool.
- Comment out ServiceWorker in the index.html file because it caused a lot of trouble.
- Cross-platform:
Windows
,Linux
,Mac
; and supports desktop and web versions. - It supports many 3D formats:
3ds
,3mf
,amf
,assimp
(anim),awd
,babylon
,binary
,bvh
(anim),collada
,ctm
,draco
,fbx
(anim),gcode
,gltf
(gltf
andglb
, anim),js
(anim),kmz
,lmesh
(anim),md2
,mmd
(pmd
andpmx
, anim),nrrd
,obj
,pcd
,pdb
,ply
,prwm
,sea3d
(anim),stl
,vrm
,vrml
,vtk
,X
. (anim) means it supports animation. - Built-in objects: group; plane, cube, circle, cylinder, sphere, icosahedron, torus, torus knot, teapot, lathe; unscaled text, 3D text; line segments, CatmullRom curve, quadratic Bezier curve, cubic Bezier curve, ellipse curve; point marks; arrow helper, axes helper; sprite.
- Built-in lights: ambient light, directional light, point light, spotlight, hemispherical light, rect area light.
- Built-in components: background music, particle emitter, sky, fire, water, smoke, cloth, berlin terrain, sky sphere.
- Support materials: LineBasicMaterial, LineDashedMaterial, MeshBasicMaterial, MeshDepthMaterial, MeshNormalMaterial, MeshLambertMaterial, MeshPhongMaterial, PointsMaterial, MeshStandardMaterial, MeshPhysicalMaterial, SpriteMaterial, ShaderMaterial, RawShaderMaterial.
- Edit javascript, shader program and json with intelligence.
- Live player can play animations in the scene.
- Exporting
gltf
,obj
,ply
,stl
,Collada
,DRACO
models. - Publish scene as static resources, and can be embedded in
iframe
. - Support languages:
English
,中文
,繁體中文
,日本語
,한국어
,русский
,Le français
. - Scene version management: supporting history and logs, undo and redo, auto saving.
- Authority management: organization, user, role, authority, registration, login, and password modification.
- Resource management: scene, mesh, texture, material, audio, animation, screenshot, video, typeface.
- MongoDB v3.6.8+
- Chrome 81.0+ or Firefox 75.0+
The following is only required when you want to build from source.
- Golang 1.14.2+
- NodeJS 14.1+
- gcc 9.3.0+ (
tdm-gcc
,MinGW-w64
orMinGW
on Windows, and make suregcc
can be accessed through the command line) - git 2.25.1+
- make 4.2.1+ (Linux only)
Note: The version number is for reference only.
You can use git to download the source code.
git clone https://github.com/tengge1/ShadowEditor.git
In China, github
is really slow, you can use gitee
instead.
git clone https://gitee.com/tengge1/ShadowEditor.git
- If you are in
China
, runmake proxy
to set golang and nodejs proxy. - Run
make
to build the server and web. - Edit
build/config.toml
, and modify the database host and port. - Run
make run
to launch the server. You can now visit:http://localhost:2020
.
- If you are in
China
, double clickset_proxy.bat
in thescripts
folder. - Double click
build.bat
in thescripts
folder. - Edit
config.toml
in thebuild
folder, and modify the database host and port. - Double click
ShadowEditor.exe
in thebuild
folder. You can now visit:http://localhost:2020
.
- Edit
./scripts/service_linux/shadoweditor.service
, set the right path. - Run
make service
to install service. - Run
sudo systemctl start shadoweditor
to start service. - Run
sudo systemctl enable shadoweditor
to auto start service.
- Run
install.bat
in thescripts/service_win
folder as administrator. - Edit
service.reg
in thescripts/service_win
folder, setAppDirectory
to the absolute path of thebuild
folder. - Double click
service.reg
in thescripts/service_win
folder. - Open
Windows Services Manager
, startShadowEditor
service.
Click to see how to create a Windows desktop application with Electron.
- 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.
- 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.
- How to enable authority?
Edit config.toml
and set authority.enabled
to true
. The default administrator username is admin
and the password is 123456
.
- 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.
- 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/
.
MIT License
Thanks to the following open source projects.
https://github.com/golang/go
https://github.com/BurntSushi/toml
https://github.com/dgrijalva/jwt-go
https://github.com/dimfeld/httptreemux
https://github.com/inconshreveable/mousetrap
https://github.com/json-iterator/go
https://github.com/mozillazg/go-pinyin
https://github.com/otiai10/copy
https://github.com/sirupsen/logrus
https://github.com/spf13/cobra
https://github.com/spf13/viper
https://github.com/urfave/negroni
https://go.mongodb.org/mongo-driver
https://github.com/facebook/react
https://github.com/mrdoob/three.js
https://github.com/rollup/rollup
https://github.com/babel/babel
https://github.com/eslint/eslint
https://github.com/rollup/rollup-plugin-babel
https://github.com/rollup/rollup-plugin-commonjs
https://github.com/rollup/rollup-plugin-json
https://github.com/rollup/rollup-plugin-node-resolve
https://github.com/egoist/rollup-plugin-postcss
https://github.com/rollup/rollup-plugin-replace
https://github.com/tweenjs/tween.js
https://github.com/JedWatson/classnames
https://github.com/d3/d3-dispatch
https://github.com/i18next/i18next
https://github.com/js-cookie/js-cookie
https://github.com/facebook/prop-types
https://github.com/codemirror/CodeMirror
https://github.com/jquery/esprima
https://github.com/tschw/glslprep.js
https://github.com/zaach/jsonlint
https://github.com/acornjs/acorn
https://github.com/kripken/ammo.js
https://github.com/dataarts/dat.gui
https://github.com/toji/gl-matrix
https://github.com/squarefeet/ShaderParticleEngine
https://github.com/mrdoob/stats.js
https://github.com/mrdoob/texgen.js
https://github.com/yomotsu/VolumetricFire