1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/ShadowEditor-ShadowEditor

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 27 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 03.03.2025 13:59 cc40216

Shadow Editor

Английский / Китайский    |    Сервер для Windows    |    Сервер для Ubuntu    |    Пример веб-приложения |    официальный сайт

Примечание: Сервер представляет собой скомпилированную версию с встроенным MongoDB, запустите start.bat или start.sh для старта, а затем перейдите по адресу http://localhost:2020 в браузере Google Chrome. Версия для Windows требует установки Visual C++ Redistributable for Visual Studio 2015.

Хорошие новости! В версии на основе vite4 + vue3 + ts5 + ant-design-vue7 уже работает. Перейти здесь для просмотра подробностей.

image image image image image image image

  • Название: Shadow Editor
  • Версия: v0.6.1 (в разработке)
  • Описание: Кросс-платформенный 3D редактор сцен на основе three.js, golang и MongoDB.
  • Исходники: GitHub Gitee | Документация: Gitee | Примеры: GitHub Gitee | Видео: Weibo Bilibili | Ассеты: BaiduNetdisk(rfja)
  • Технологическая стопка: html, css, javascript, rollup, react.js, webgl, three.js, golang, mongodb, nodejs, electron, протокол буферов.
  • Если вам помогло это приложение, пожалуйста, помогите нам.

Открытая версия

Профессиональная версия

v0.6.1 в разработке

Начиная с версии v0.6.1, ShadowEditor будет предоставлять основные возможности и расширенные API, а остальные функции будут доступны через расширения, как в VSCode. Мы будем развивать проект в ветке dev.

  1. Устранение ошибки отображения списка типографских символов в некоторых версиях Go.
  2. Скрытие вкладки истории версий модели.
  3. При выборе спрайта граница больше не отображается.
  4. Устранение ошибки стилей выпадающего меню поиска.

v0.6.0 вышла

  • Дата выхода: 24 июля 2021 года
  • Журнал обновлений:
  1. Устранение ошибки создания нового соединения с базой данных MongoDB при запросах.
  2. Проверка VR в строке состояния для активации VR.
  3. Настройка преобразования сцены.
  4. Как показывать окно при клике на объект: https://gitee.com/tengge1/ShadowEditor/issues/I3APGI
  5. Можно включить https в конфигурационном файле config.toml.
  6. Добавление событий для мобильных браузеров в скрипт: onTouchStart, onTouchEnd, onTouchMove.
  7. Обновление three.js до версии r130.
  8. Добавление событий VR в скрипт: onVRConnected, onVRDisconnected, onVRSelectStart, onVRSelectEnd.
  9. Поддержка всех типов контроллеров VR, таких как HTC Vive.
  10. Устранение ошибки удаления скриптов.
  11. Устранение ошибки сериализации Geometry после обновления three.js.
  12. Добавление параметров визуализации материала polygonOffset, polygonOffsetFactor, polygonOffsetUnits для решения проблемы конфликта глубины.
  13. Устранение ошибки сохранения атрибута visible компонентов в сетке.
  14. Отказ от поддержки типа модели Bin.
  15. Устранение ошибки кубической текстуры.
  16. Переписывание всех методов prototype на ES6 class в исходном коде.
  17. Удаление модуля визуализации.
  18. Устранение ошибки экспорта сцены без копирования текстуры неба.
  19. Устранение ошибок дождя и снега.
  20. Изменение цвета фона и освещения для лучшей видимости.
  21. Устранение ошибки эмиттера частиц.
  22. Устранение ошибки ткани.
  23. Устранение ошибки динамического настройки тени.

Список функций- [x] Общие

  • Кросс-платформенные
    • Windows, Linux, MacOS
    • Десктоп, веб
  • Поддержка нескольких языков
    • Английский, китайский, традиционный китайский, японский, корейский, русский, французский
  • Управление активами
    • сцена, сетка, текстура, материал, аудио, анимация, скриншот, видео, шрифт
  • Управление правами доступа
    • организация, пользователи
    • роли, права доступа
    • регистрация, вход, изменение пароля
  • Управление версиями
    • история и журналы сцены
    • отмена действий, повтор действия, автоматическое сохранение
  • Проигрыватель
    • воспроизведение анимаций в реальном времени, возможность проигрывания в полноэкранном режиме и новом окне
  • Настройки
    • отображение, рендерер, помощник, фильтр, погода, режим управления, режим выбора, режим добавления, язык
  • Редактирование малых сцен
    • Добавление сетки
      • 3ds, 3mf, amf, assimp, awd, babylon, 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
    • Встроенные объекты
      • группа
      • плоскость, куб, круг, цилиндр, сфера, икосаэдр, тор, узел тора, чайник, латеральная поверхность
      • текст без масштабирования, трёхмерный текст
      • отрезки линии, кривая CatmullRom, кривая Безье второго порядка, кривая Безье третьего порядка, эллипсовидная кривая
      • метки точек
      • помощник стрелки, помощник осей
      • спрайт
    • Встроенные источники света
      • окружающий свет, направленный свет, точечный свет, прожектор, полушарной свет, прямоугольный источник света
      • помощник точечного света, помощник полушарного света, помощник прямоугольного источника света
    • Встроенные компоненты
      • фоновая музыка, эмиттер частиц
      • небо, огонь, вода, дым, ткань
      • берлинская местность, сфера неба
    • Редактирование материалов
      • LineBasicMaterial, LineDashedMaterial, MeshBasicMaterial, MeshDepthMaterial, MeshNormalMaterial
      • MeshLambertMaterial, MeshPhongMaterial, PointsMaterial, MeshStandardMaterial, MeshPhysicalMaterial
      • SpriteMaterial, ShaderMaterial, RawShaderMaterial
    • Послепроцессинг
      • следы, боке, точки, FXAA, глюк
      • полутона, пиксели, сдвиг RGB, SAO
      • SMAA, SSAA
      • SSAO, TAA
    • Редактирование текста
      • редактирование JavaScript с поддержкой автозаполнения
      • редактирование шейдеров
      • редактирование JSON файлов
    • Экспорт сетки
      • gltf, obj, ply, stl, Collada, DRACO
    • Публикация сцены
      • публикация сцены как статических ресурсов, которую можно встраивать в iframe
    • Примеры
      • Arkanoid, камера, частицы, пинг-понг, шейдеры
    • Общие инструменты
      • Выбор, перемещение, поворот, масштабирование, Просмотр, Перемещение, Поворот, Приближение
      • Перспективный вид, передний вид, боковой вид, верхний вид, режим линейной сетки
      • Экранная фотография, сохранение
      • Начертание точки, линии, многоугольника, прыжок
      • Измерение расстояния
    • Другое
      • VR: cardboard, htc vive, chrome, firefox
      • Bullet физический движок
  • UI контроллеры
    • Контейнер
    • Форма: кнопка, флажок, форма, формы проверки, значок кнопки, значок меню кнопки, значок кнопки, вход, метка, ссылка, радио, поиск, список, текстовое поле, свеча
    • Иконка
    • Изображение: изображение, список изображений, изображение выбора, загрузка изображения
    • Размещение: абсолютное размещение, компактное размещение, облачное размещение, горизонтальное размещение, таблица размещения, вертикальное размещение
    • Меню: контейнерное меню, панель меню, панель меню заполнителя, элемент меню, разделитель элемента меню, вкладка меню
    • Панель
    • Прогресс: прогрессная маска
    • Свойство: свойства кнопки, массив свойств, свойства флажка, цветовые свойства, свойства отображения, целочисленные свойства, числовые свойства, группировка свойств, список, текстовые свойства, технические свойства
    • SVG
    • Таблица: база данных, таблица, границы таблицы, ячейки таблицы, заголовки таблицы, строки
    • График
    • Инструментная панель: инструментная панель, заполнитель инструментной панели, разделитель инструментной панели
    • Дерево
    • Окно: сообщение, запрос, сообщение, фото, вопрос, сбор, видео, окно

Требования

  1. MongoDB v3.6.8+
  2. Chrome 81.0+ или Firefox 75.0+

Если вам требуется создать исходный код, следующие требования применимы:

  1. GoLang 1.14.2+
  2. NodeJS 14.1+
  3. gcc 9.3.0+ (tdm-gcc, MinGW-w64 или MinGW для Windows, и доступный из командной строки)
  4. git 2.25.1+

Примечание: Версия указана только для справки.

Скачивание и сборка

Чтобы скачать исходный код, используйте git.

git clone https://github.com/tengge1/ShadowEditor.git

При медленной работе GitHub в Китае, можно использовать gitee.

git clone https://gitee.com/tengge1/ShadowEditor.git

Сборка на Windows и Ubuntu

Веб-версия:

  1. Если вы в Китае, выполните команду npm run set-proxy, чтобы настроить прокси для GoLang и NodeJS.
  2. Выполните команду npm install, чтобы установить зависимости NodeJS.
  3. Выполните команду npm run build, чтобы собрать сервер и веб-приложение.
  4. Измените файл build/config.toml, чтобы задать сервер MongoDB и порт.
  5. Выполните команду npm start, чтобы запустить сервер. Теперь вы можете использовать ShadowEditor по адресу http://localhost:2020.
  6. Если вы включили https в конфигурационном файле, вы можете посетить адрес https://localhost:2020.

Десктопная версия:

  1. Скачайте MongoDB и распакуйте в папку utils/mongodb.
  2. Соберите веб-версию.
  3. Выполните команду npm run build-desktop, чтобы собрать версию для десктопа в папке build/desktop.

Установка как службы Windows

  1. Откройте PowerShell или cmd с правами администратора в папке build.
  2. Выполните команду .\ShadowEditor install, чтобы установить ShadowEditor как службу.
  3. Выполните команду .\ShadowEditor start, чтобы запустить службу ShadowEditor.
  4. Теперь вы можете посетить адрес: http://localhost:2020.
  5. Эта служба также может быть управлена через Управление службами Windows.

Установка как службы Ubuntu

  1. Измените файл ./scripts/service_linux/shadoweditor.service, установив правильный путь.
  2. Выполните команду sudo cp ./scripts/service_linux/shadoweditor.service /etc/systemd/system/.
  3. Выполните команду sudo systemctl daemon-reload, чтобы перезагрузить демона системы.
  4. Выполните команду sudo systemctl start shadoweditor, чтобы запустить службу.
  5. Выполните команду sudo systemctl enable shadoweditor, чтобы автоматически запускать службу при старте системы.

Использование командной строки

PS E:\github\ShadowEditor\build\> .\ShadowEditor
ShadowEditor — это редактор сцен 3D, основанный на three.js, golang и mongodb.
Этот приложение использует mongodb для хранения данных.

Использование:
  ShadowEditor [команда]

Доступные команды:
  debug       Отладка службы на Windows
  help        Помощь по любой команде
  install     Установка службы на Windows
  serve       Запуск сервера
  start       Запуск службы на Windows
  stop        Остановка службы на Windows
  version     Вывод номера версии
```Флаги:
      --config string   конфигурационный файл (по умолчанию "./config.toml")
  -h, --help            помощь по ShadowEditor

Используйте "ShadowEditor [команда] --help", чтобы получить больше информации о команде.


## Разработчики

1. Скачайте и установите `NodeJs`, `golang`, `MongoDB` и `Visual Studio Code`.
2. Рекомендуется установить следующие расширения для VSCode, которые могут быть полезны.

ESLint, Go, Поддержка шейдерных языков для VS Code, Поддержка TOML.


Использование npm скриптов:

npm install: установка зависимостей NodeJS. npm run build: сборка сервера и веб-клиента. npm run build-server: сборка только сервера. (Для разработки) npm run build-web: сборка только веб-клиента. (Для разработки) npm run build-desktop: сборка версии для десктопа. npm run dev: автоматическая сборка веб-клиента при изменения файла. (Для разработки) npm run copy: копирование активов из папки web в папку build. npm run start: запуск веб-сервера. npm run set-proxy: установка прокси для golang и nodejs. (Только для Китая) npm run unset-proxy: удаление прокси для golang и nodejs. npm run install-dev: установка инструментов разработки для golang. npm run eslint: проверка js файлов и автоматическое исправление ошибок. npm run clean: удаление сборок веб-клиента и версии для десктопа. npm run clear: удаление ненужных пакетов NodeJS.


## Вклад

<details>
  <summary>Развернуть для просмотра деталей</summary>

ShadowEditor — это проект как для пользователей, так и для разработчиков. Вы можете вносить свой вклад и реализовывать свои идеи в этом проекте. Нет зарплаты, но много удовольствия. Для участия вам следует:

1. Создать форк репозитория.
2. Создать ветку Feat_xxx.
3. Применить ваш код.
4. Создать запрос на слияние.

**Примечание:** НЕ отправляйте большие двоичные файлы, иначе запрос на слияние будет отклонён. Если требуется, вы можете добавить файлы или директории, которые должны игнорироваться, в файл `.gitignore`.
</details>

## Часто задаваемые вопросы

<details>
  〈summary〉Развернуть для просмотра деталей〈/summary〉

1. Возникли проблемы при загрузке моделей.

Вы должны сжать ассеты модели в файл `zip`, и входной файл не должен находиться внутри папки. Сервер разархивирует его и помещает в папку `./build/public/Upload/Model`, а затем добавляет запись в коллекцию MongoDB `_Mesh`.

2. Как объединить несколько моделей вместе?

Основная геометрия поддерживает многократное вложенное расположение. Вы можете создать группу (в меню геометрии), а затем перетянуть несколько моделей на группу в панели `Hierachy`.

3. Как включить права доступа?

Отредактируйте файл `config.toml` и установите значение `authority.enabled` равным `true`. По умолчанию имя пользователя администратора — `admin`, пароль — `123456`.

4. Браузер сообщает об ошибке `asm.js был отключен из-за подключения скрипт-дебаггера.`

**Полная ошибка:** asm.js был отключен из-за подключения скрипт-дебаггера. Чтобы включить asm.js, отсоедините дебаггер. ammo.js (1,1) SCRIPT1028: SCRIPT1028: Ожидался идентификатор, строка или число ShadowEditor.js (3948,8) SCRIPT5009: 'Shadow' не определено.

**Решение:** браузер Tencent не поддерживает `ammo.js` (WebAssembly), скомпилированный с помощью `Emscripten`. Рекомендованы браузеры Chrome или Firefox.

5. Как можно обновиться с версии C# до версии на golang?

Структура данных и веб-клиент не изменились, просто скопируйте папку `./ShadowEditor.Web/Upload/` в папку `build/public/Upload/`.

6. Версия для десктопа не открывается.

Windows требует `Visual C++ Redistributable for Visual Studio 2015`. Вы можете установить его по адресу: https://www.microsoft.com/en-us/download/details.aspx?id=48145  
Если версия для десктопа не открывается, просмотрите файл `logs.txt`; если порты заняты, измените порты MongoDB и сайта в файле `resources/app/config.toml`.

7. Как можно создать сертификат HTTPS?

Установите `openssl`, который уже содержится в клиенте git; Откройте `cmd`, `PowerShell` или `shell`, и выполните следующие команды:

```sh
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

Среди сгенерированных файлов, certificate.pem является сертификатом, а privatekey.pem — ключом.

Лицензия

Лицензия MIT

Проекты открытого исходного кода

Развернуть для просмотра деталей

Благодарность за следующие проекты открытого исходного кода.

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

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/ShadowEditor-ShadowEditor.git
git@api.gitlife.ru:oschina-mirror/ShadowEditor-ShadowEditor.git
oschina-mirror
ShadowEditor-ShadowEditor
ShadowEditor-ShadowEditor
master