Shadow Editor
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!
v0.5.4 is Coming Soon
- 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
Note: MongoDB requires Visual C++ Redistributable for Visual Studio 2015. If it's not working, install
from: https://www.microsoft.com/en-us/download/details.aspx?id=48145
v0.5.3 has Released
- 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.
Features
- 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(gltfandglb, anim),js(anim),kmz,lmesh(anim),md2,mmd(pmdandpmx, 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,DRACOmodels. - 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.
Requirements
- 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-w64orMinGWon Windows, and make suregcccan be accessed through the command line) - git 2.25.1+
- make 4.2.1+ (Linux only)
Note: The version number is for reference only.
Download and Compile
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
Build on Ubuntu
- If you are in
China, runmake proxyto set golang and nodejs proxy. - Run
maketo build the server and web. - Edit
build/config.toml, and modify the database host and port. - Run
make runto launch the server. You can now visit:http://localhost:2020.
Build on Windows
- If you are in
China, double clickset_proxy.batin thescriptsfolder. - Double click
build.batin thescriptsfolder. - Edit
config.tomlin thebuildfolder, and modify the database host and port. - Double click
ShadowEditor.exein thebuildfolder. You can now visit:http://localhost:2020.
Install as Ubuntu Service
- Edit
./scripts/service_linux/shadoweditor.service, set the right path. - Run
make serviceto install service. - Run
sudo systemctl start shadoweditorto start service. - Run
sudo systemctl enable shadoweditorto auto start service.
Install as Windows Service
- Run
install.batin thescripts/service_winfolder as administrator. - Edit
service.regin thescripts/service_winfolder, setAppDirectoryto the absolute path of thebuildfolder. - Double click
service.regin thescripts/service_winfolder. - Open
Windows Services Manager, startShadowEditorservice.
Create Windows Desktop Application
Click to see how to create a Windows desktop application with Electron.
Development Guide
- Download and install
NodeJs,golang,MongoDBandVisual Studio Code. - It is recommended to install the following VSCode extensions which may be helpful.
ESLint, Go, Shader languages support for VS Code, TOML Language Support.
Contributing
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:
- Fork the repository.
- Create Feat_xxx branch.
- Commit your code.
- 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
- 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/.
License
MIT License
Open Source Projects
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
