Git Product home page Git Product logo
 photo

shadoweditor Goto Github PK

repos: 2.0 gists: 0.0

Type: Organization

Bio: Cross-platform 3D scene editor based on three.js, golang and mongodb for desktop and web. https://tengge1.github.io/ShadowEditor-examples/

Shadow Editor

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

image image image image image image image

  • Name: Shadow Editor
  • Version: v0.5.9 (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, nodejs, electron, CesiumJS, Protocol Buffers.
  • If helpful to you, please DOnate to support us. thank you!

v0.5.9 is Coming

  1. 3D GIS. (In development)

v0.5.8 has Released

  • Release Date: August 23, 2020
  • Update Logs:
  1. 3D GIS. (In development)
  2. Fix the bug that npm start is not working on Ubuntu and Mac.
  3. Added npm run serve script to monitor other file changes during hot update.
  4. Fix the bug that error occurs when playing in new window.

Feature List

  • General
    • Cross-platform
      • Windows, Linux, Mac
      • Desktop, Web
    • Multi-language support
      • English、中文、繁體中文、日本語、한국어、русский、Le français
    • Assets management
      • scene, mesh, texture, material, audio, animation, screenshot, video, typeface
    • Authority management
      • organization, user
      • role, authority
      • registration, login, password modification
    • Version management
      • Scene history and logs
      • undo, redo, auto saving
    • Player
      • play animations in the scene in real time, and can play full screen and in new window
    • Settings
      • Display, renderer, helpers, filter, weather, control mode, select mode, add mode, language
  • Small scene editing
    • Add mesh
      • 3ds, 3mf, amf, assimp, awd, babylon, binary, bvh, collada, ctm
      • draco, fbx, gcode, gltf, glb, js, kmz, lmesh, md2, pmd, pmx
      • nrrd, obj, pcd, pdb, ply, prwm, sea3d, stl, vrm, vrml, vtk, X
    • 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
      • point light, hemispherical light, rect area light helper
    • Built-in components
      • background music, particle emitter
      • sky, fire, water, smoke, cloth
      • berlin terrain, sky sphere
    • Materials editing
      • LineBasicMaterial, LineDashedMaterial, MeshBasicMaterial, MeshDepthMaterial, MeshNormalMaterial
      • MeshLambertMaterial, MeshPhongMaterial, PointsMaterial, MeshStandardMaterial, MeshPhysicalMaterial
      • SpriteMaterial, ShaderMaterial, RawShaderMaterial
    • Post-processing
      • After-image, bokeh, dot screen, FXAA, glitch
      • halftone, pixel, RGB shift, SAO
      • SMAA, SSAA
      • SSAO, TAA
    • Text editing
      • javascript editing with intelligence
      • shader editing
      • json file editing
    • Mesh export
      • gltf、obj、ply、stl、Collada、DRACO
    • Scene publishment
      • Publish scene as static resources, and can be embedded in iframe
    • Examples
      • Arkanoid, camera, particle, ping pong, shader
    • General tools
      • Select, pan, rotate, zoom
      • Perspective view, front view, side view, top view, wireframe mode
      • Screenshot, record
      • Draw point, draw line, draw polygon, spray
      • Measure distance
    • Others
      • Bullet physics engine
      • Ray tracing rendering, voxel rendering
      • UV unwrap
      • Automatic pathfinding
      • Batch rendering
      • Occlusion culling
      • Split screen display
  • GIS scene editing
    • Vector imagery
      • Google vector tiles
      • Tianditu vector tiles
    • Satellite imagery
      • Bing satellite tiles
      • Google satellite tiles
      • Tianditu satellite tiles
    • 3D terrain
      • Arcgis elevation
      • Cesium elevation
      • Terrain editing
    • Ground features editing
      • Draw point, line and polygon
      • Layer editing, style editing
      • Pipe network editing, district editing
      • computer room editing, pipe gallery editing
      • Data query
    • Data Service
      • WMTS, WMS, MVT service
      • Mapbox-gl-js styles,mvt data
      • Cesium 3dtiles
    • Data processing and import
      • OSM, sharp, dxf, excel, BIM, point cloud, oblique photography
    • Analysis
      • Distance measurement, area measurement, angle measurement
      • Perspective analysis, visual domain analysis, buffer analysis, flooding analysis
      • Topological analysis, Connectivity analysis, Burst analysis, Cross-sectional analysis
      • Topographic excavation, section diagram, contour line, heat map
    • 3D plotting, 3D cartography
    • Other tools
      • Coordinate system conversion, Data correction
        • wgs84, cgcs2000, beijing54、xi'an80、gcj-02、bd-09
        • Mercator projection, gaussian projection
        • Seven parameter conversion, four parameter conversion
      • Resource downloader, pyramid slice, mesh resampling
  • 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

Requirements

  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+ (tdm-gcc, MinGW-w64 or MinGW on Windows, and make sure gcc 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 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 both Windows and Ubuntu

Web Version:

  1. If you are in China, 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 build/config.toml, and modify the mongodb host and port.
  5. Run npm run start to launch the server. You can now visit: http://localhost:2020.

Desktop Version:

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

Install as Windows Service

  1. Open PowerShell or cmd in the build 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: http://localhost:2020.
  5. You can also manage this service in the Windows Services Manager.

Install as Ubuntu Service

  1. Edit ./scripts/service_linux/shadoweditor.service, 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 NodeJs, golang, MongoDB and 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.

Contributing

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: https://www.microsoft.com/en-us/download/details.aspx?id=48145
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.

License

MIT License

Open Source Projects

Expand to view details

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/mjeanroy/rollup-plugin-strip-banner
https://github.com/andyearnshaw/rollup-plugin-bundle-worker

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
https://github.com/jonbretman/amd-to-as6
https://github.com/chandlerprall/ThreeCSG

https://github.com/mapbox/mapbox-gl-js
https://github.com/CesiumGS/cesium
https://github.com/NASAWorldWind/WebWorldWind
https://github.com/OSGeo/gdal
https://github.com/mapnik/mapnik
https://github.com/go-spatial/tegola
https://github.com/Turfjs/turf
https://github.com/mourner/rbush

shadoweditor's Projects

fighting-design icon fighting-design

🌈 Fighting Design 可在 vue3 应用程序中快速构建交互界面,看起来还不错。(🌈 Fighting design can quickly build interactive interfaces in vue3 applications, which looks good.)

shadoweditor icon shadoweditor

Cross-platform 3D scene editor based on three.js, golang and mongodb for desktop and web. https://tengge1.github.io/ShadowEditor-examples/

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.