Shadow Editor
Supported Languages: English / 中文 / 日本語 / 한국어 / русский / Le français
Click to switch to
C#branch, which is no longer maintained.
- Name: Shadow Editor
- Version: v0.5.0 (coming soon)
- Description: 3D scene editor based on
three.js、golangandmongoDB. - Source Code: GitHub Gitee | Document: GitHub Gitee | Demo: GitHub Gitee | Video: Weibo Bilibili | Assets: BaiduCloud
- Technology Stack:
html,css,javascript,rollup,react.js,webgl,three.js,golang,mongoDB. - If helpful to you, please DOnate to support us. thank you!
Screenshot
v0.5.0 is Coming
Compared with asp.net, golang has many advantages:
- Support both
Windows,LinuxandMac. - Similar to C language. support
goroutine, which take great advantages of multi-core, and have high performance. - Easy to learn. Huge standard libraries and third-party libraries, and high development efficiency.
- Can compiled to a single executable file, it is not necessary to install
golangnorNodeJs. - No
iisrequired, and can build both desktop and web version. - Data is compressed with
gzip, and the speed of displaying and scene loading is extremely fast. - No
Visual Studiorequired. You can develop withVisual Studio Codeboth for the front and back ends.
Update Logs:
- Fixed that the
dracomodel cannot be loaded due to the upgrade ofthree.js. - Models in
.jsonformat are no longer supported. - Fix that the bottom row of the category list window is blocked by the button.
- Fix that the texture cannot be loaded when the texture is attached.
- Fix that the audio cannot set thumbnails.
- Fix that the thumbnail cannot be set in the screenshot.
- Fix that the thumbnail cannot be set in the video.
- Fix that the confirmation dialog cannot be cancelled and closed.
- Fix that the role list is not refreshed after deleted.
v0.4.6 has Released
- Release Date: April 5, 2020
- Update Logs:
- Fixed that the confirmation dialog of loading auto save scene cannot be cancelled, the button
Cancelis changed toEmpty. - Fix that saving the sample scene report "ID is invalid". Now the sample scenes can be saved.
- Adding "Background Music" component now works.
- Fixed that the music file was not exported when the background music component was released.
- Fixed that the video address is incorrect.
- Fix that obtaining server configuration and unused server address.
- Golang server. (Under development)
- Fix that calling
clock.getDeltaandclock.getElapsedTimemultiple times in the scripts may cause abnormal animation. Now these functions can be called multiple times in the scripts.
Features
- Based on three.js 3D scene online editor, use
MongoDBto save scenes, models, textures, materials, audio, animations, screenshots, video data. - Built-in objects: group, plane, cube, circle, cylinder, sphere, icosahedron, tire, knot, teapot, wine glass, unscaled text, 3D text, line segment, CatmullRom curve, quadratic Bezier curve, Cubic Bezier curve, elliptic curve, point label, sprite.
- Built-in light: ambient light, parallel light, point light source, spotlight, hemispherical light, rectangular light, with point light source helper (halo effect), hemispherical light helper (sky ball), rectangular light helper (screen).
- Supports importing models and animations in many different 3D formats. Supports
3ds,3mf,amf,assimp(anim),awd,babylon,binary,bvh(anim),collada,ctm,draco,fbx(anim),gcode,gltf(anim),js(anim),kmz,lmesh(anim),md2,mmd(anim),nrrd,obj,pcd,pdb,ply,prwm,sea3d(anim),stl,vrm,vrml,vtk,X3D file formats, withanimmeans support animations. Many 3D files support bothjsonand binary formats. Themmdfile supports bothpmdandpmxformats, and models and camera animations in thevmdformat. - Built-in materials: line material, dashed material, basic material, depth material, normal vector material, Lambert material, phong material, point cloud material, standard material, physical material, sprite material, shader material, original shader material.
- Support textures: color texture, transparent texture, bump texture, normal texture, displacement texture, mirror texture, environment texture, lighting texture, occlusion texture, self-illumination texture.
- Support textures: images, cube textures, video textures.
- Built-in components: background music, particle emitters, sky, fire, water, smoke, cloth, berlin terrain components.
- Visually modify the attributes of scenes, cameras and other objects, and provide various components to visually modify the panel.
- Edit js scripts and shader programs online with intelligence.
- Player can show scene animations, supports full-screen and new window, can be directly embedded in
iframe. - Support tween animation, skeleton animation, particle animation, mmd animation, lmesh animation (lol model).
- Support scene, model, texture, material, audio, animation, screenshot, video management, support custom classification, fast search based on Chinese characters and Pinyin.
- Supports 5 controllers: first-angle controller, flight controller, track controller, pointer lock controller, and trackball controller.
- Support lattice effect, color shift effect, afterimage effect, background blur, fast approximate anti-aliasing (FXAA), glitch effect, halftone effect, full-screen anti-aliasing (SSAA), pixel effect, scalable ambient light Occlusion (SAO), multi-sample anti-aliasing (SMAA), screen space ambient occlusion (SSAO), temporal anti-aliasing (TAA).
- Provide history and log, support undo and redo.
- Support exporting
gltf,obj,ply,stl,Collada,DRACOscenes and models. - Support
bulletphysics engine. Cubes, circles, cylinders, icosahedrons, wine glasses, planes, spheres, teapots, tires, knots and loaded models all support rigid body components. Support visual setting of collider shape (cube, sphere), mass and inertia. - It has tools for translation, rotation, scaling, drawing points, lines, and decals on the surface of objects, and real-time statistics of the number of objects, vertices, and triangles in the scene.
- Support scene publishing, which can publish scenes as static resources and deploy to any server.
- Support languages:
English,Chinese,Traditional Chinese,日本语,한국어,русский,Le français. - Support hue-rotate, saturation, brightness, Gaussian blur, contrast, grayscale, color invert, sepia filters.
- Support version management, you can open history scenes.
- Support screenshot and video recording.
- Authority management: organization management, user management, role management, authority management, system initialization, system reset, registration, login, and password modification.
- Examples: Arkanoids, cameras, particles, table tennis, shaders.
- Font manager and convert tool, which can convert
ttftojson, which is convenient for creating 3D text. - Support setting the selected color and border thickness, mouse highlight color, shadow type, various helper display hidden, filter effect, weather effect.
Development Requirements
These requirements are only required for development, and the production environment does not require any software other than MongoDB and browser.
- Windows, Linux, Mac, or any that support
golangandnodejs. - Golang 1.14.2+
- NodeJS 14.1+
- gcc 9.3.0+ (You need to install
MinGWon windows and add toPATHto ensure thatgcccan be accessed through the command line). - git 2.25.1+
- MongoDB v3.6.8 +
- VSCode 1.44.2+
- Chrome 81.0+ or Firefox 75.0+
Note: Low version may work. Please install these development environments before compiling.
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
If you need a csharp version, you can checkout the v0.4.6-csharp branch which is no longer maintained.
Click to see the install guide.
git checkout -b csharp origin/v0.4.6-csharp
Build on Ubuntu
You can use make to build this application on ubuntu. If you have no make,
run sudo apt install make first.
- If you are in
China, runmake proxyto set golang and nodejs proxy. - Run
makein the root folder to build all this application. - Open
build/config.toml, and set 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, run.\scripts\set_go_proxy.batand.\scripts\set_npm_proxy.batto set golang and nodejs proxy. - Run
.\scripts\install_develop.batto install golang development tools; - Run
.\scripts\install.batto install golang and nodejs dependencies. - Run
.\scripts\build.batto build both server and web client. - Run
.\scripts\run.batto launch the server. You can now visit:http://localhost:2020.
License
MIT License
Questions & Answers
- 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 ./public/Upload/Model file, 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?
Open 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.
Related Links
- Three.js: https://threejs.org/
- LOL model viewer: https://github.com/tengge1/lol-model-viewer
- Model download1: https://sketchfab.com/3d-models?features=downloadable
- Model download2: https://www.3dpunk.com/work/index.html?category=downloadable
