3d форум по Blender

Другое => Игровые 3d-движки (любые) => Тема начата: Samovar от 23 Июль 2018, 13:38:42

Название: CopperCube
Отправлено: Samovar от 23 Июль 2018, 13:38:42
CopperCube - самый простой в использовании 3D игровой движок.
Начиная с версии 6.0 стал бесплатен (платные версии добавляют некоторый функционал).
ОС: Windows, MacOS
Возможно создавать игры для: Windows, MacOS,  Android, а так же WebGL и HTML5. (экспорт во Flash теперь не поддерживается)
Разработан на известном движке Irrlicht.
Программирование в большинстве случаев не требуется.
Есть физика, динамические тени и отражения, частицы и многое другое.
Возможно писать скрипты и расширения на JavaScript.
Жанровая направленность: создание шутеров от первого лица, приключений, пошаговых демонстраций, симуляторов, приложений электронного обучения и т.п.
Интерфейс полностью русифицирован.

Справка на русском (английский интерфейс) в ZIP архиве. Распакуйте и замените папку doc, там где у вас установлен CopperCube. Или распакуйте куда-нибудь, и откройте файл index.html в вашем браузере.
https://yadi.sk/d/VxdlJ3l_q24aHA
Название: Re: CopperCube
Отправлено: Striver от 23 Июль 2018, 14:37:54
Цитировать
Начиная с версии 6.0 стал бесплатен
Ну, класс! А нахрена я тогда 5-ю покупал? Правда, руки так и не дошли разобраться с этим движком. И  JavaScript - штука несколько неприятная...
Название: Re: CopperCube
Отправлено: Samovar от 23 Июль 2018, 14:38:39
Несколько уроков на английском:

Создание 2D-игры «Марио» в Coppercube
Большинству разработчиков и новичков в Coppercube сложно создавать 2D-игры, используя этот 3D движок. В этом уроке мы собираемся создать клон игрового уровня Classic Mario без единой строчки программирования.
https://neophyte.cf/tut2.html


Использование физики в Coppercube 3D Engine
В этом уроке мы будем использовать физическое моделирование в игровом движке Coppercube 3D для создания простой игры в боулинг.
https://neophyte.cf/tut4.html


Анимация модели в Блендере с использованием Riggify и MakeWAlk
При разработки игр, люди обычно зацикливаются на анимации для своих моделей. Этот урок по анимации 3D-модели без стрессов и нервов.
https://neophyte.cf/tut1.html
Название: Re: CopperCube
Отправлено: Samovar от 23 Июль 2018, 14:42:51
Цитировать
Начиная с версии 6.0 стал бесплатен
Ну, класс! А нахрена я тогда 5-ю покупал? Правда, руки так и не дошли разобраться с этим движком. И  JavaScript - штука несколько неприятная...

В бесплатной версии так и будет висеть лого CopperCube, и недоступны эффекты постобработки и проигрывания видео.
Вот список доступного функционала при покупке профессиональной версии за 6 тысяч 580 рублей, и студий за 13 тысяч рублей:

Зато у тебя есть возможность экспорта во Flash. Это круто, на самом деле...

Создание APK файла (Android) из SWF без использования AIR (SWF to APK))
http://portofollo.blogspot.com/2012/08/apk-android-swf-air.html
Название: Re: CopperCube
Отправлено: Striver от 23 Июль 2018, 15:01:26
Цитировать
Вот список доступного функционала при покупке профессиональной версии за 6 тысяч 580 рублей, и студий за 13 тысяч рублей:
На стиме всё-таки дешевле:
Название: Re: CopperCube
Отправлено: Samovar от 23 Июль 2018, 15:02:38
Да, крутое падение цены аж в 4 раза! Конечно выгодно покупать в стиме, а не на официальном сайте. Спасибо за инфу!
Название: Re: CopperCube
Отправлено: Samovar от 15 Декабрь 2018, 19:11:30
Ехаем дальше.... теперь перевод справки по CopperCube на русский... надеюсь, управлюсь гораздо быстрей, чем с переводом справки по Game-Editor, уложившись в 2-3 месяца, а не почти год :) ...
Схема такая же... буду выкладывать переведённое здесь... читайте, возмущайтесь, негодуйте и пишите, что поправить... в финале выложу ссылку на архив...
Пока перевод на русский будет для английского интерфейса... потом второй вариант, возможно, для русского интерфейса, но с терминами надо достаточно точно вначале определиться и поправить интерфейс на русском...
Название: Re: CopperCube
Отправлено: Samovar от 16 Декабрь 2018, 19:23:21
Документация CopperCube

Добро пожаловать в документацию Coppercube. CopperCube - это очень простая в использовании система создания 3D-приложений и игровой движок.

(https://www.ambiera.com/coppercube/doc/images/coppercubelogo.png)

Ниже приведены хорошие места, чтобы начать чтение документации:



В начале пути
Краткий справочник, показывающий, как использовать CopperCube.
(https://www.ambiera.com/coppercube/doc/images/editor_startup_small.jpg)




Уроки


Создание 3D-прогулки
Из этого урока вы узнаете, как создать контроллер камеры от первого лица, с помощью которого вы сможете прогуляться по трехмерной сцене и сталкиваться со стенами.
(https://www.ambiera.com/coppercube/doc/images/tut_icon_walktrough.jpg)


Действия и события
В этом уроке показано, как определить действия, такие как скрытие объектов, воспроизведение звуков или открытие веб-сайтов, когда пользователь нажимает на объекты в вашей сцене.
(https://www.ambiera.com/coppercube/doc/images/tut_icon_events_actions.jpg)


Создание игры-стрелялки от первого лица
Из этого урока вы узнаете, как создать игру-стрелялку от первого лица без программирования.
(https://www.ambiera.com/coppercube/doc/images/tut_icon_egoshooter.jpg)


Как использовать тени реального времени
Из этого урока вы узнаете, как использовать в игре динамические 3D-тени в реальном времени, а также узнаете о других методах освещения в CopperCube.
(https://www.ambiera.com/coppercube/doc/images/tut_icon_shadowmaps.jpg)


Создание просмотровщика 3D-модели
В этом уроке показано, как создать простое приложение для просмотра 3D-моделей, позволяющее просматривать 3D-модель со всех сторон, управляя мышью.
(https://www.ambiera.com/coppercube/doc/images/tut_icon_model_viewer.jpg)


Использование камеры от третьего лица
Из этого урока вы узнаете, как создать и использовать камеру от третьего лица, которая следует за анимированным персонажем, путешествующим по миру.
(https://www.ambiera.com/coppercube/doc/images/tut_icon_3rdpersoncam.jpg)


Создание 3D-конфигуратора
Из этого урока вы узнаете, как создать простое приложение 3D-конфигуратор, с 2D-кнопками для просмотра 3D-модели со всех сторон и изменения её текстур.
(https://www.ambiera.com/coppercube/doc/images/tut_icon_configurator.jpg)


Создание полёта камеры
Из этого урока вы узнаете, как создать полёт камеры через трехмерный мир, используя функцию «путь» в CopperCube.
(https://www.ambiera.com/coppercube/doc/images/tut_icon_camera_flight.jpg)


Уроки программирования сценариев (написание скриптов)

Перемещение с помощью JavaScript
В этом примере показано, как интерактивно перемещать 3d-объект в сцене Coppercube с помощью JavaScript.
(https://www.ambiera.com/coppercube/doc/images/tut_icon_movement.jpg)


Создание сценария действия с помощью JavaScript
Пример показывает, как создать сценарий с помощью JavaScript, который можно использовать как и встроенные действия для всех целевых платформ.
(https://www.ambiera.com/coppercube/doc/images/tut_icon_script_action.jpg)


Создание сценария поведения с помощью JavaScript
Пример показывает, как создать сценарий поведения с помощью JavaScript,который можно использовать как и встроенные поведения для всех целевых платформ.
(https://www.ambiera.com/coppercube/doc/images/tut_icon_script_behavior.jpg)


Создание 3D-геометрии с помощью JavaScript
Вы можете создавать новую трехмерную геометрию с нуля в CopperCube, как показано в этом уроке.
(https://www.ambiera.com/coppercube/doc/images/tut_icon_geometry.jpg)


Столкновение с помощью JavaScript
В этом примере показано, как проверить столкновение между курсором мыши и 3d-объектом в сцене Coppercube с использованием JavaScript..
(https://www.ambiera.com/coppercube/doc/images/tut_icon_collision.jpg)
Название: Re: CopperCube
Отправлено: Striver от 17 Декабрь 2018, 09:06:20
Привет! Тебе предлагать исправления, или лучше не вмешиваться?
Название: Re: CopperCube
Отправлено: Samovar от 17 Декабрь 2018, 12:23:06
Привет. Да, конечно предлагай. Обсудим. Поправлю.
Название: Re: CopperCube
Отправлено: Striver от 17 Декабрь 2018, 14:58:15
Наверняка ты не со всеми этими правками согласишься, но это уже на твоё усмотрение.

Цитировать
Ниже приведены хорошие места, чтобы начать чтение документации:
Ниже приведены хорошие отправные точки, чтобы начать чтение документации:

Цитировать
Из этого урока вы узнаете, как создать контроллер камеры от первого лица, с помощью которого вы сможете прогуляться по трехмерной сцене и сталкиваться со стенами.
Из этого урока вы узнаете, как создать контроллер камеры от первого лица, с помощью которого вы сможете прогуляться по трехмерной сцене и отслеживать столкновения со стенами.

Цитировать
В этом уроке показано, как создать простое приложение для просмотра 3D-моделей, позволяющее просматривать 3D-модель со всех сторон, управляя мышью.
В этом уроке показано, как создать простое приложение-просмотрщик, позволяющее просматривать 3D-модель со всех сторон, управляя мышью.

Цитировать
Из этого урока вы узнаете, как создать полёт камеры через трехмерный мир, используя функцию «путь» в CopperCube.
Из этого урока вы узнаете, как создать пролёт камеры через трехмерный мир, используя функцию «путь» в CopperCube.

Цитировать
Пример показывает, как создать сценарий с помощью JavaScript, который можно использовать как и встроенные действия для всех целевых платформ.
Пример показывает, как создать сценарий на языке JavaScript, который можно будет использовать также, как и встроенные действия на всех целевых платформах.

Цитировать
Пример показывает, как создать сценарий поведения с помощью JavaScript,который можно использовать как и встроенные поведения для всех целевых платформ.
Пример показывает, как создать сценарий поведения с помощью JavaScript,который можно будет использовать также, как и встроенные поведения на всех целевых платформах.
Название: Re: CopperCube
Отправлено: Samovar от 17 Декабрь 2018, 17:04:52
Благодарю. Согласен во всём. Поправил... единственное, написал "так же" раздельно, поискав в инете правила написания в данном контексте... Буду рад последующим твоим комментария и правкам. Со стороны всегда лучше видней ошибки и несуразности. У меня часто страдают синтаксис с пунктуацией, и временами, получаются странноватые речевые обороты ... :)
Название: Re: CopperCube
Отправлено: Samovar от 17 Декабрь 2018, 18:11:21
Содержание

Документация CopperCube
 
Обзор
Краткая справка
    Обзор
    Основные инструменты
    Добавление объектов в сцену
Обзор типов 3D-объектов
Определение контроллеров камеры
    Настройка контроллера
    Направление взгляда
    Столкновение
Уроки
    Простые уроки
         Создание 3D-прогулки
         Действия и события
         Создание игры-стрелялки
         Создание пролёта камеры
         Создание просмотрщика 3D-модели
         Использование камеры от третьего лица
         Создание 3D-конфигуратора
     Создание собственных действий и поведений
         Создание сценария действия
         Создание сценария поведения
         Создание 3D-геометрии с помощью JavaScript
     Сценарии с помощью JavaScript (Win/Mac)
         Перемещение с помощью JavaScript
         Столкновение с помощью JavaScript
Целевая платформа
     WebGL (.html)
         Поддержка браузеров
         Сценарии с помощью JavaScript
         Скрытие текстов отладки
     Windows (.exe)
         Аргументы командной строки
         Сценарии с помощью JavaScript
         Использование значка
         Поддержка Steam
         Режимы окна
         Исходный код
     MacOS (.app)
        Аргументы командной строки
        Сценарии с помощью JavaScript
        Исходный код
     Android (.apk)
        Установка
        Системные требования
        Сценарии
        Menu Key
        Звук
        Исходный код
Местность и деревья
Туман
Эффекты постобработки
Тени реального времени
Карта освещения
Карты нормалей
3D-звуки
Анимация персонажа
Поведения
Действия
Сценарии
Виртуальная реальность (Oculus Rift)
Справочник по JavaScript
Дополнительные темы
    Физика
    Ресурсы
    Проигрывание видео
    Шейдеры
    Упаковка текстур
    Интерфейс командной строки
    Лицензии
Название: Re: CopperCube
Отправлено: Samovar от 23 Декабрь 2018, 00:40:06
Краткая справка

Обзор

CopperСube - это инструмент для создания интерактивных 3D-сцен простым способом, начиная от простых просмотрщиков 3D-моделей, до полнофункциональных 3D-игр. В принципе, процесс создания 3D-сцен работает следующим образом:
Отредактируйте 3D-сцену в редакторе CopperСube. Создайте 3D-геометрию в редакторе и/или импортируйте ее из других приложений 3D-моделирования. Применяйте в объектах сцены настройки столкновений, текстуры, материалы и прочее.
На панели инструментов нажмите вкладку "Publish" (Опубликовать). Выберите целевую платформу (например, Windows или WebGL) и нажмите кнопку со значком стрелки вправо , чтобы протестировать вашу 3D-сцену.


(https://www.ambiera.com/coppercube/doc/images/editor_startup.jpg)
Редактор CopperCube после запуска.

Если вы еще этого не сделали, то можете скачать CopperСube с сайта www.ambiera.com


Основные инструменты

Редактор довольно прост в использовании. При запуске редактора, появляется главный вид и панель инструментов с четырьмя кнопками, которыми можно изменить текущий активный вид: Persp.(Перспективный вид), Top (Вид сверху), Front (Вид спереди) или Left (Вид слева).


(https://www.ambiera.com/coppercube/doc/images/editor_viewbuttons.jpg)
Кнопки смены вида.


Вы также можете использовать клавиши F1, F2, F3 и F4 для переключения между этими видами. Есть еще четыре важные кнопки, с которыми вам нужно ознакомиться:


(https://www.ambiera.com/coppercube/doc/images/editor_maintools.jpg)
Кнопки четырёх основных инструментов.


Четыре кнопки слева («Select» (Выбрать объект), «Move» (Двигать объект), «Rotate» (Повернуть объект) и «Scale» (Масштабировать объект)) являются основными инструментами, которые вам понадобятся. Нажав на одну кнопок, вы сможете легко изменить большинство объектов в 3D-сцене, выделив объект  и перетащив одну из стрелок, отображаемых на нём. Вы также можете использовать клавиши Q, W, E и R для этого.


Добавление объектов в сцену

Самое важное, что нужно  уметь делать, - это создавать объекты в 3D-сцене. Вы можете сделать это, нажав вкладку «Create» (Создать) на панели инструментов.


(https://www.ambiera.com/coppercube/doc/images/editor_sceneeditingtools.jpg)
Кнопки добавления новых объектов в сцену.


Например, с помощью кнопки с изображением куба, вы можете создать куб. Двойной клик по одной из текстур в окне текстур ниже, назначит на объект полигональной сетки куба новую текстуру. Есть и другие кнопки для создания сфер, конусов и цилиндров. Но для более сложных объектов, вы можете импортировать существующую полигональную сетку, или созданную вами во внешнем пакете трехмерного моделирования, таком как: Maya, 3D Studio, Softimage, Blender или Anim8or.
CopperCube может импортировать огромное количество форматов файлов, например: .fbx, .3ds, .obj, .b3d, .csm, .dae, .dmf, .oct, .irrmesh, .lwo, .x, .ms3d, .my3D, .mesh, .lmts, .bsp, .md2, .stl), поэтому, вам нужно только сохранить полигональную сетку в одном из этих  форматов файлов, используя для этого экспортер в вашем 3D-редакторе. Чтобы импортировать внешний 3D-файл, используйте File -> Import -> Static Mesh, или нажмите кнопку «Import a static mesh» (Импортировать статическую полигональную сетку) на панели инструментов, чтобы импортировать файл. Вуаля, теперь он в CopperCube, и вы можете разместить его, масштабировать, редактировать его материалы и использовать в 3D-сцене.


(https://www.ambiera.com/coppercube/doc/images/editor_importstaticmesh.jpg)
Импортирование статических полигональных сеток.
Название: Re: CopperCube
Отправлено: Striver от 23 Декабрь 2018, 16:09:12
Цитировать
При запуске редактора, появляется главный вид и панель инструментов с четырьмя кнопками, которыми можно изменить текущий активный вид:
При запуске редактора появляется главный вид и панель инструментов с четырьмя кнопками, которыми можно изменить текущий активный вид:
но, возможно:
При запуске редактора появляется окно главного вида и панель инструментов с четырьмя кнопками, которыми можно изменить текущий активный вид:

Цитировать
Например, с помощью кнопки с изображением куба, вы можете создать куб.
Например, с помощью кнопки с изображением куба вы можете создать куб.

Цитировать
Двойной клик по одной из текстур в окне текстур ниже, назначит на объект полигональной сетки куба новую текстуру.
Двойной клик по одной из текстур в окне текстур внизу назначит на объект полигональной сетки куба новую текстуру.

Цитировать
Есть и другие кнопки для создания сфер, конусов и цилиндров.
Есть и другие кнопки, позволяющие создавать сферы, конусы и цилиндры.

Цитировать
Вуаля, теперь он в CopperCube, и вы можете разместить его, масштабировать, редактировать его материалы и использовать в 3D-сцене.
Вуаля, теперь он внутри CopperCube, и вы можете размещать его, масштабировать, редактировать его материалы и использовать в 3D-сцене.
Название: Re: CopperCube
Отправлено: Samovar от 23 Декабрь 2018, 16:49:05
Благодарю. Поправил.
Название: Re: CopperCube
Отправлено: Samovar от 29 Декабрь 2018, 23:40:53
Обзор типов 3D-объектов


CopperCube включает в себя несколько типов 3D-объектов, которые можно добавить в 3D-сцену. Эти 3D-объекты иногда также называют «узлами сцены», так как CopperCube использует иерархический граф сцены для отображения 3D-графики.


(https://www.ambiera.com/coppercube/doc/images/editor_sceneeditingtools.jpg)


Ниже приведен список с кратким описанием всех доступных типов:


Значок
Наименование
Описание

(https://www.ambiera.com/coppercube/doc/images/primitives.png)
3D-примитивы   
Создают различные 3d примитивы: куб, сфера, цилиндр, конус и плоскость. Используйте их для размещения в любом месте вашей сцены. Они могут быть установлены, чтобы блокировать свет при расчёте карт освещения в CopperCube, или просто украсить вашу сцену. Если вы хотите создавать более сложные сцены, рекомендуется смоделировать их во внешнем 3D-редакторе и импортировать их в виде полигональной сетки.

(https://www.ambiera.com/coppercube/doc/images/roomcreator.png)
Создатель комнаты   
Запускает создатель комнаты, для создания простой 3D-комнаты со стенами. Когда вы нажмёте эту кнопку, откроется диалоговое окно, где вы можете рисовать полы и стены на плане. При нажатии «ОК» создается очень простая 3D-комната.

(https://www.ambiera.com/coppercube/doc/images/terrain.png) 
Местность   
Создает узел местности в сцене, для редактирования ландшафта местности с деревьями, травами и многим другим. Смотрите редактирование ландшафта местности.

(https://www.ambiera.com/coppercube/doc/images/importmesh.png) 
Импорт статической 3D-модели из файла 
Импортирует статическую 3D-сетку из файла, например, из файла .3ds 3d Studio. Есть много поддерживаемых 3D-форматов файлов. Если вы хотите создавать сложные трехмерные сцены, то это рекомендуемый способ импорта ваших файлов в CopperCube.

(https://www.ambiera.com/coppercube/doc/images/importanimatedmesh.png)
Импорт анимированной 3D-модели из файла 
Импортирует анимированную трехмерную полигональную 3D-сетку из файла. Подробности об этом вы можете найти на странице Анимация персонажа.

(https://www.ambiera.com/coppercube/doc/images/light.png) 
Точечный источник света  
Создает точечный источник света, расположенный в трехмерном пространстве. Его можно использовать для создания карты освещения или для динамического освещения вашей 3D-сцены. У точечных источников света есть радиус, в пределах которого они влияют на предметы вокруг них, и цвет. Кроме того, для карты освещения вы можете выбрать, должен ли источник света отбрасывать тени или нет.

(https://www.ambiera.com/coppercube/doc/images/light_directional.png)
Направленный источник света   
Создает источник направленного света. Это полезно для имитации очень удалённых источников света, например, света от солнца. Трехмерное положение направленного источника света не используется для расчёта, только направление его лучей. Свет можно использовать для создания карты освещения или для динамического освещения вашей 3D-сцены.
Примечание: Материалы с картами нормалей работают только с точечными источниками света в CopperCube, направленные источники света игнорируются.

(https://www.ambiera.com/coppercube/doc/images/camera.png) 
Камера
Создает камеру, на основе которой будет отрисовываться сцена после публикации. Камеры работают как в реальном мире: у них есть соотношение сторон и поле зрения. Кроме того, можно задать ближнюю плоскость отсечения NearPlane (по умолчанию 1) и дальнюю плоскость отсечения FarPlane (по умолчанию 3000), которые определяют, между какими значениями будет отображаться геометрия. Если, например, объект находится дальше, чем 3000 единиц от камеры, то он не будет нарисован. Обратите внимание, что увеличение этого значения приведет к снижению точности отрисовки, поскольку это влияет на z-буфер.
Вы можете добавить различные поведения для камеры, в том числе и специальные поведения только для камер, такие как контроллер игры-стрелялки от первого лица. Дополнительные сведения см. в разделе Контроллеры камеры.

(https://www.ambiera.com/coppercube/doc/images/tree.png)
Дерево  
Создает процедурно сгенерированное дерево на основе заданных пользователем параметров. Дополнительные сведения см. в разделе Генерация деревьев.

(https://www.ambiera.com/coppercube/doc/images/water.png) 
Вода   
Создает отражающую в режиме реального времени поверхность воды с настраиваемыми параметрами. Её можно использовать для создания озер, рек и океанов.

(https://www.ambiera.com/coppercube/doc/images/billboard.png)
Билборд   
Билборд - это просто двухмерный спрайт, размещенный в трехмерном пространстве. Своей плоскостью он всегда направлен лицом к камере. Билборды обычно используются для создания частиц, огня, дыма и тому подобного.

(https://www.ambiera.com/coppercube/doc/images/vbillboard.png)
Вертикальный билборд   
Ведет себя так же, как обычный билборд, но всегда стоит вертикально. Это полезно, например, для создания растений простым способом: просто назначьте изображение дерева или травы в качестве текстуры, и билборд будет выглядеть как растение.

(https://www.ambiera.com/coppercube/doc/images/psystem.png) 
Система частиц 
Систему частиц можно использовать для имитации таких эффектов, как огонь, дым, дождь, туман и т.д. Окно свойств имеет множество настроек, с помощью которых можно настроить систему частиц, чтобы она выглядела так же, как требуемый эффект.

(https://www.ambiera.com/coppercube/doc/images/skybox.png) 
Скайбокс 
Скайбокс - это куб с 6 текстурами, нарисованными на фоне сцены. Используется для создания иллюзии неба или окружающей среды. Не имеет смысла иметь более одного скайбокса на сцену.

(https://www.ambiera.com/coppercube/doc/images/3dsound.png) 
3D-звук   
Используется для создания звука, размещенного где-то в трехмерном пространстве, но также может использоваться для воспроизведения обычного звука, например, для фоновой музыки. Дополнительные сведения см. в разделе 3D-звуки.

(https://www.ambiera.com/coppercube/doc/images/path.png) 
Путь 
Определяет путь в трехмерном пространстве и может использоваться, чтобы заставить объект следовать по нему. Просто добавьте поведение «Follow Path» (Следовать по пути) к любому 3D-объекту. Пути могут быть замкнутой окружностью или простой линией и иметь параметр «Tightness» (Напряженность), который управляет тем, как интерполируется движение между узлами пути. Используйте кнопку «Create a path node» (Создать узел) пути, чтобы добавить больше узлов к пути.

(https://www.ambiera.com/coppercube/doc/images/pathnode.png) 
Узел пути   
Узел пути. Когда выбран путь, нажатие этой кнопки добавит узел пути к этому пути.

(https://www.ambiera.com/coppercube/doc/images/2doverlay.png) 
2D-наложение 
2D-наложение можно использовать для отображения логотипов в 2D на 3D-сцене или даже для создания кнопок, которые запускают действия при нажатии на них.

(https://www.ambiera.com/coppercube/doc/images/2dtouchscreen.png) 
2D-экран сенсорного ввода   
Ведет себя как 2D-наложение и может использоваться для имитации ввода на устройствах без клавиатуры, но с сенсорным экраном. Благодаря этому вы можете запускать свои игры на планшетах, телефонах и других устройствах.

Название: Re: CopperCube
Отправлено: Striver от 02 Январь 2019, 17:17:22
Ну вот, расставил все запятые правильно, мне теперь и докопаться не к чему...  :D

Это так, совсем мелкие придирки:
Цитировать
Есть много поддерживаемых 3D-форматов файлов.
Поддерживается большое количество 3D-форматов файлов.
или
Поддерживается большое количество форматов файлов с 3D-объектами.

Цитировать
Не имеет смысла иметь более одного скайбокса на сцену.
Не имеет смысла добавлять более одного скайбокса на сцену.
Название: Re: CopperCube
Отправлено: Samovar от 02 Январь 2019, 21:50:15
Поправил.
Название: Re: CopperCube
Отправлено: Samovar от 06 Январь 2019, 09:59:30
Определение контроллеров камеры

Чтобы определить, как пользователи приложения созданного в  CopperCube должны управлять камерой, необходимо добавить объект камеры в сцену. Просто нажмите кнопку камеры на вкладке панели инструментов редактирования сцены, и откроется диалоговое окно, в котором вы можете выбрать тип камеры для использования:

(https://www.ambiera.com/coppercube/doc/images/dlg_add_camera.jpg)
Диалоговое окно создания новой камеры

Есть несколько типов камер на выбор:
Simple Camera «Простая камера»: очень простая камера, которая не движется. Этот тип камеры также очень полезен, когда вы хотите запрограммировать свой собственный контроллер камеры.
Free Flying Camera «Камера свободного полёта»: камера, известная из игр-стрелялок от первого лица. Вы можете свободно перемещаться с помощью клавиш курсора и осматриваться с помощью мыши.
First Person Shooter camera «Камера от первого лица»:  камера, известная из игр-стрелялок от первого лица. Вы можете перемещаться с помощью клавиш курсора и осматриваться с помощью мыши.
Model Viewer Camera «Камера обзора модели»: камера, движущаяся по орбитам вокруг объекта-цели.
Third Person Camera «Камера от третьего лица»: камера, которая следует за объектом, контролируемым клавиатурой.
Panorama Camera «Панорамная камера»: камера, неспособная перемещаться, но с возможностью обзора на 360 градусов.

Также обратите внимание, что по умолчанию новая камера при перемещении будет сталкиваться со стенами в вашей сцене, а также будет активной при старте каждой сцены. Если вы не хотите этого, то снимите флажки ниже.


Регулировка свойств контроллера камеры

После того, как вы добавили новую камеру в сцену, вы можете найти настройки контроллера камеры на вкладке Behavior «Поведение». Как правило, существует поведение First Person Shooter style controlled «Контроллер в стиле игры-стрелялки от первого лица» (для камер Free flying «Камера свободного полёта» и FPS «Камера от первого лица») или Model Viewer Camera «Камера обзора модели», и если вы выбрали collides against geometry when moved «сталкивается с геометрией при перемещении», тогда должно быть добавлено поведение Collides when moved «Сталкиваться при перемещении»:
 
(https://www.ambiera.com/coppercube/doc/images/dlg_cam_attributes.png)
Окно свойств поведения камеры


Выбрав один из вариантов поведения, вы можете настроить его значения, такие как: скорость движения или расстояние до центра камеры контроллера модели. Вы можете добавлять новые варианты поведения с помощью кнопки «+» и удалять существующие с помощью кнопки «-», но будьте осторожны с этим.


Направление взгляда

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

(https://www.ambiera.com/coppercube/doc/images/editor_camera.jpg)
Цель камеры

Эта маленькая точка указывает направление камеры. Вы можете установить новую позицию цели камеры, если просто выберете её и переместите:

(https://www.ambiera.com/coppercube/doc/images/editor_camera_target.jpg)
Изменение положения цели камеры

Цель камеры - это не только точка, куда камера изначально будет направлена, но и центр вращения для камер с контроллерами типа Model viewer «Камера обзора модели».


Столкновение

После того, как вы добавили новую камеру и выбрали Сollides against geometry when moved «Сталкиваться с геометрией при перемещении», вы можете заметить, что вокруг нее появится желтый эллипсоид:

(https://www.ambiera.com/coppercube/doc/images/editor_camera_coll.jpg)
Желтый эллипсоид столкновения вокруг выбранной камеры

Это вызвано поведением, которое было добавлено в свойства камеры. Это поведение называется Collide when moved «Сталкиваться при перемещении», и его можно найти на вкладке Behavior «Поведение» в окне Properties «Свойства»:

(https://www.ambiera.com/coppercube/doc/images/dlg_behavior.jpg)
Поведение «Сталкиваться при перемещении»

При выборе поведения Collide when moved «Сталкиваться при перемещении» вы можете настраивать его параметры. Параметры Size «Размер» влияют на размер эллипсоида вокруг камеры, и они описывают тело виртуального человека, перемещающего камеру. Если вы хотите отрегулировать положение головы (или глаз) в теле столкновения, измените значения в параметрах Relative Position «Относительное положение». Чтобы включить гравитацию для падения камеры, установите флажок AffectedByGravity «Влияет сила тяжести». Для увеличения или уменьшения гравитации вы можете настроить значение Gravity «Гравитация» в Properties -> Attributes  «Свойствах -> Атрибутах» корневого объекта сцены. Например, введите «-100» для  очень большой обратной силы тяжести (выталкивание) или «0» для отсутствия силы тяжести.

Если вам необходимо точно установить, с какими элементами вашей сцены камера должна сталкиваться, установите или снимите флажок Collision «Столкновение» во вкладке Attributes «Атрибуты» соответствующего объекта сцены.


Застревание

Иногда можно застрять в геометрии при движении. Для того чтобы камера не застряла, всегда устанавливайте её таким образом, чтобы желтый эллипсоид не сталкивался со стеной в самом начале сцены.
Если камера застревает во время движения, проблема может заключаться в 3D-сетке: нужно быть немного осторожным при моделировании статической геометрии, с которой сталкивается камера. Геометрия должна быть замкнутой, и нигде не должно быть торчащих односторонних многоугольников, это обычно те места, где камера застревает.
Кроме того, если точки вершин, которые должны быть вместе, не совсем совпадают, это может вызвать проблемы. Если используемое программное обеспечение для трехмерного моделирования поддерживает функцию Merge Vertex  «Слить вершины», чтобы соседние вершины были точно в одном и том же месте, то рекомендуется сделать это. Чаще всего это помогает решить проблему застревания.
Название: Re: CopperCube
Отправлено: Samovar от 06 Январь 2019, 18:20:42
Урок: Создание 3D-прогулки

Из этого урока вы узнаете, как, используя CopperCube, создать контроллер камеры от первого лица, с помощью которого вы сможете побродить по трехмерной сцене, при этом сталкиваясь со стенами.

Начало: Создайте свою 3D-сцену
Для начала нам нужна 3D-сцена, по которой мы сможем прогуляться. Импортируйте 3D-модель, добавьте скайбокс, источники света и все, что захотите, пока вас не устроит 3D-сцена. Вы также можете использовать команды Create plane «Создать плоскость» и Create cube  «Создать кубу» или модели из ресурсов (Prefabs), чтобы создать очень простую сцену в целях тестирования этого урока. Сцена, которую я использую в этом уроке, выглядит следующим образом: простая комната с несколькими окнами и лестницей в ней:


(https://www.ambiera.com/coppercube/doc/images/tut_walktrough.jpg)
Сцена для этого урока


Примечание: Вы также можете быстро создать объект трехмерного мира, используя генератор комнат встроенный в CopperCube. Для этого используйте меню Edit -> Insert -> Create a room mesh from a 2D map «Правка -> Вставить -> Создать комнату из 2D-карты», и нарисуйте простой план комнаты.


Добавление камеры
После того, как вы настроили свою сцену, вам нужна камера, чтобы пользователь мог ходить по трехмерной сцене. Нажмите на вкладку Create «Создать» и щелкните значок камеры, чтобы создать новую камеру (в качестве альтернативы используйте меню: Edit -> Insert -> Create a Camera «Правка» -> «Вставить» -> «Создать камеру»).
Должно появиться диалоговое окно создания камеры:


(https://www.ambiera.com/coppercube/doc/images/dlg_add_camera.jpg)
Диалоговое окно создания камеры


Выберите  камеру типа First Person Shooter Camera «Камера от первого лица». Также убедитесь, что отмечены оба параметра Collides against geometry when moved «Сталкиваться с геометрией при перемещении» и When starting the scene, this is the first active camera «При запуске сцены это первая активная камера». Нажатие «ОК» создает новую камеру и выбирает ее:
 
(https://www.ambiera.com/coppercube/doc/images/tut_walktrough2.jpg)
Недавно созданная камера от первого лица


Обратите внимание на желтый контур эллипсоида вокруг камеры. Это тело столкновения, примерно размером с человека, который будет ходить по сцене. Возможно, вам нужно отрегулировать размер этого эллипсоида, чтобы он соответствовал вашей сцене. Вы должны сделать его достаточно большим, чтобы пользователь мог подниматься по лестнице, но достаточно маленьким, чтобы проходить через двери.
Вы можете использовать инструмент масштабирования (клавиша «R»), чтобы изменить размер эллипсоида.


(https://www.ambiera.com/coppercube/doc/images/tut_walktrough3.jpg)
Регулировка размера эллипсоида столкновения


Кроме того, убедитесь, что желтый эллипсоид немного «летает» в воздухе и не касается какой-либо стены или пола, иначе пользователь застрянет в этом положении при запуске приложения и не будет способен двигаться.


Теперь перейдите в окно свойств камеры Properties, откройте вкладку Behavior «Поведение», и выберите поведение First Person Shooter style controlled «Контроллер в стиле игры-стрелялки от первого лица»:


(https://www.ambiera.com/coppercube/doc/images/dlg_cam_attributes.png)
Окно свойств поведения камеры


Вы можете установить различные параметры, такие как скорость движения или скорость вращения. Если вы хотите, чтобы камера могла летать, а не ходить, вы можете выбрать опцию CanFly «Может летать», но вам также необходимо снять флажок AffectedByGravity «Влияет сила тяжести».
Вторым поведением в камере является поведение Collide when moved «Столкновение при перемещении»:


(https://www.ambiera.com/coppercube/doc/images/dlg_path_coll_attributes.png)
Поведение «Сталкиваться при перемещении»


Такое поведение препятствует движению камеры через стены. Если вы хотите, чтобы пользователь мог перемещаться сквозь стены, то просто нажмите кнопку «-» и сотрите это поведение.
Атрибут Size «Размер» - это размер эллипсоида, вы также его можете вручную настроить здесь, если хотите. Если вы хотите отрегулировать положение головы или глаз в теле столкновения, измените значение в параметрах Relative Position  «Относительное положение». Чтобы увеличить или уменьшить силу тяжести, отрегулируйте значение Gravity «Гравитация», которое вы найдёте, выбрав корневой узел сцены в Scene Graph Explorer «Менеджер сцены». Например, введите 100 для очень сильного притяжения или 0 для отсутствия эффекта гравитации.

Вот и все, теперь вы можете побродить по своей 3D-сцене, просто протестировав свое приложение (меню: Tools -> Test as Windows .exe or Flash .swf «Инструменты -> Тестировать как Windows .exe или Flash .swf»). Если в сцене более одной камеры, убедитесь, что для камеры с эллипсоидом включен параметр Active «Активна» во вкладке атрибутов Attributes окна свойств Properties.
Название: Re: CopperCube
Отправлено: Striver от 06 Январь 2019, 21:50:33
Полноценной проверки ещё не делал, но сейчас такой вопрос:
Точно у Free Flying Camera и у First Person Shooter camera должно быть одинаковое описание?
Название: Re: CopperCube
Отправлено: Striver от 06 Январь 2019, 21:59:52
Цитировать
Чтобы определить, как пользователи приложения созданного в  CopperCube должны управлять камерой, необходимо добавить объект камеры в сцену.
Чтобы определить, как пользователи приложения, созданного в CopperCube, должны управлять камерой, необходимо добавить объект камеры в сцену.

Цитировать
Просто нажмите кнопку камеры на вкладке панели инструментов редактирования сцены, и откроется диалоговое окно, в котором вы можете выбрать тип камеры для использования:
Просто нажмите кнопку камеры на вкладке панели инструментов редактирования сцены, и откроется диалоговое окно, в котором вы сможете выбрать тип камеры для использования:

Цитировать
Есть несколько типов камер на выбор:
Существует несколько типов камер на выбор:

Цитировать
После добавления новой камеры вы можете заметить, что у нее появится линия соединяющаяся с точкой в ​​пространстве:
После добавления новой камеры, вы можете заметить, что у нее появится линия соединения с точкой в ​​пространстве:
Название: Re: CopperCube
Отправлено: Striver от 06 Январь 2019, 23:18:07
Цитировать
Примечание: Вы также можете быстро создать объект трехмерного мира, используя генератор комнат встроенный в CopperCube.
Примечание: Вы также можете быстро создать объект трехмерного мира, используя генератор комнат, встроенный в CopperCube.

Цитировать
Если в сцене более одной камеры, убедитесь, что для камеры с эллипсоидом включен параметр Active «Активна» во вкладке атрибутов Attributes окна свойств Properties.
Если в сцене присутствует более одной камеры, убедитесь, что для камеры с эллипсоидом включен параметр Active «Активна» во вкладке атрибутов Attributes окна свойств Properties.
Название: Re: CopperCube
Отправлено: Samovar от 07 Январь 2019, 08:20:42
Поправил. Благодарю.
Точно у Free Flying Camera и у First Person Shooter camera должно быть одинаковое описание?
В оригинале так и было...
Я изменил так:

Free Flying Camera «Камера свободного полёта»: камера совбодного полёта, известная из игр-стрелялок от первого лица. Вы можете свободно перемещаться в пространстве сцены с помощью клавиш и осматриваться с помощью мыши.

First Person Shooter camera «Камера от первого лица»:  камера перемещения по поверхности, известная из игр-стрелялок от первого лица. Вы можете перемещаться по поверхностям с помощью клавиш и осматриваться с помощью мыши.
Название: Re: CopperCube
Отправлено: Samovar от 17 Январь 2019, 18:04:11
Урок: Выполнение действий при нажатии на объекты

В этом уроке показано, как назначить действия, такие как: скрытие объектов, воспроизведение звуков или открытие веб-сайтов, когда пользователь нажимает на объекты в сцене CopperСube.

Начало: Создайте свою 3D-сцену
Для начала нам нужна 3D-сцена, в которой есть несколько 3D-объектов, с которыми мы сможем взаимодействовать.С помощью панели инструментов Create «Создать» (или используйте меню: Edit -> Insert «Правка -> Вставить») создайте 4 случайных объекта: сферы, кубы или цилиндры, и  камеру Simple Camera «Простая камера». Пусть цель камеры будет направлена на объекты, чтобы сцена выглядела примерно так:

(https://www.ambiera.com/coppercube/doc/images/tut_action_events1.jpg)
Сцена для этого урока

Это нужно для того, чтобы после публикации и запуска 3D-сцены вы могли видеть объекты и нажимать на них с помощью указателя мыши.

Добавление событий и действий
Как только вы настроите свою сцену, перейдём к важной части: мы хотим сделать так, что бы один из объектов, скажем, цилиндр, исчезал, ​​когда мы нажмем на другой объект - сферу. Для этого выберите сферу и перейдите на вкладку Behavior «Поведение» в окне свойств Properties. Там нажмите на кнопку «+», чтобы добавить новое поведение:

(https://www.ambiera.com/coppercube/doc/images/tut_action_events2.png)
Добавление поведения сфере

Выбрав поведение When clicked do something «По нажатию на этот объект», вы сможете добавить поведение, которое запускает действие, когда пользователь нажимает на сферу. Есть и другие варианты поведения на выбор, например, поведение On proximity do something «При приближении к объекту», которое запускает действие, когда что-то приближается к этому объекту, но в этом уроке мы используем поведение  When clicked do something «По нажатию на этот объект».

После того, как вы добавили это поведение, появятся его параметры. Игнорируйте их сейчас и просто кликните на Action «Действие», чтобы определить, что должно произойти, когда вы будете кликать мышью на объекте сцены. Когда вы нажимаете кнопку «...», откроется диалоговое окно, где вы можете редактировать список действий. Нажмите на кнопку «+», и появится список действий:

(https://www.ambiera.com/coppercube/doc/images/tut_action_events3.png)
Диалоговое окно редактирования (выбора и добавления) действий

Выберите действие Hide or unhide a scene node «Скрыть или отобразить узел (объект) сцены», которое позволит сделать видимым или невидимым другой объект. Есть 3 режима на выбор: Make Invisible «Сделать невидимым», который скроет объект, Make Visible «Сделать видимым», который покажет его или Toggle Visibility «Переключить видимость», который сделает его видимым, если он невидим и невидимым, если он виден. Toggle Visibility «Переключить видимость» для нас подходит и должен быть выбран по умолчанию, так что оставьте всё как есть. Теперь нам нужно только выбрать, какой узел сцены скрыть: Нажмите кнопку Select  «Выбрать» в списке Change which Scene Node «Указать какой (узел) объект сцены»:

(https://www.ambiera.com/coppercube/doc/images/tut_action_events4.png)
Выбор узла (объекта) сцены для скрытия или отображения

Должно появиться диалоговое окно для выбора узла сцены, где вы можете выбрать куб или цилиндр.

(https://www.ambiera.com/coppercube/doc/images/tut_action_events5.png)
Выбор узла (объекта) сцены для скрытия или отображения

На этом все. Если вы сейчас опубликуете свою сцену (Tools -> Test as ... Application «Инструменты -> Тестировать как ... Приложение») и нажмёте на сферу, то другой объект должен исчезнуть. Если вы нажмете на сферу снова, то другой объект появится вновь.

Существует множество других действий, таких как изменение положения узла (объекта) сцены, воспроизведение звука или открытие веб-сайта. Просто попробуйте их.






Название: Re: CopperCube
Отправлено: Striver от 17 Январь 2019, 21:59:41
Цитировать
Для начала нам нужна 3D-сцена, в которой есть несколько 3D-объектов, с которыми мы сможем взаимодействовать.С помощью панели инструментов Create «Создать» (или используйте меню: Edit -> Insert «Правка -> Вставить») создайте 4 случайных объекта: сферы, кубы или цилиндры, и  камеру Simple Camera «Простая камера».
Для начала нам нужна 3D-сцена, в которой есть несколько 3D-объектов, с которыми мы сможем взаимодействовать. С помощью панели инструментов Create «Создать» (или используйте меню: Edit -> Insert «Правка -> Вставить») создайте 4 случайных объекта: сферы, кубы или цилиндры, и  камеру Simple Camera «Простая камера».

Цитировать
Как только вы настроите свою сцену, перейдём к важной части: мы хотим сделать так, что бы один из объектов, скажем, цилиндр, исчезал, ​​когда мы нажмем на другой объект - сферу.
Как только вы настроите свою сцену, перейдём к важной части: мы хотим сделать так, чтобы один из объектов, скажем, цилиндр, исчезал, ​​когда мы нажмем на другой объект - сферу.

Цитировать
Есть 3 режима на выбор: Make Invisible «Сделать невидимым», который скроет объект, Make Visible «Сделать видимым», который покажет его или Toggle Visibility «Переключить видимость», который сделает его видимым, если он невидим и невидимым, если он виден.
Есть 3 режима на выбор: Make Invisible «Сделать невидимым», который скроет объект, Make Visible «Сделать видимым», который покажет его или Toggle Visibility «Переключить видимость», который сделает его видимым, если он невидим, и невидимым, если он виден.
или даже
Есть 3 режима на выбор: Make Invisible «Сделать невидимым», при котором объект будет скрыт, Make Visible «Сделать видимым», при котором объект появится, или Toggle Visibility «Переключить видимость», при котором он станет видимым, если был невидим, и невидимым, если он был виден.
Название: Re: CopperCube
Отправлено: Samovar от 17 Январь 2019, 22:48:05
Striver, благодарю. Поправил.
Название: Re: CopperCube
Отправлено: Samovar от 28 Апрель 2019, 18:00:39

Урок: Создание игры-стрелялки или шутера от первого лица

Из этого урока вы узнаете, как создать игру-стрелялку от первого лица с помощью CopperCube,  совершенно без программирования. Окончательное приложение может выглядеть так:


(https://www.ambiera.com/coppercube/doc/images/tut_egoshooter.jpg)
Итоговое приложение


Начало: Создайте свою 3D-сцену
Для начала нам нужна 3D-сцена или мир, в котором будет происходить игра. Импортируйте 3D-модель, добавьте скайбокс, источники света и все, что захотите, пока вас не устроит 3D-сцена. Вы также можете использовать генератор комнат, встроенный в CopperCube, для создания простого мира, выбрав меню Edit -> Insert -> Create a room mesh from 2D map «Правка -> Вставить -> Создать комнату из  2D-карты и нарисовать комнату. В этом примере я использовал 3D-модель большой круглой комнаты, а также поместил несколько источников света, чтобы она выглядела более привлекательно:


(https://www.ambiera.com/coppercube/doc/images/tut_egoshooter2.jpg)
Сцена для этого урока


Создание камеры игрока
Как и в уроке Создание 3D-прогулки, нам нужна 3D-камера, которой управляет игрок, и которая может перемещаться в трехмерном мире, не проходя сквозь стены. Он также должен уметь подниматься по лестнице и падать под действием силы тяжести.
Нажмите на вкладку Scene editing «Редактирование сцены» и щелкните символ камеры, чтобы создать новую камеру (в качестве альтернативы используйте меню: Edit -> Insert -> Create a Camera «Правка -> Вставить -> Создать камеру»). Вот, как это должно выглядеть:


(https://www.ambiera.com/coppercube/doc/images/dlg_add_camera.jpg)
Диалоговое окно создания новой камеры


Выберите First Person Shooter Camera «Камера от первого лица». Также убедитесь, что отмечены оба параметра: Collides against geometry when moved «Сталкиваться с геометрией при перемещении» и When starting the scene, this is the first active camera «При запуске сцены - это первая активная камера». Нажатие «ОК» создает новую камеру и выбирает ее:


(https://www.ambiera.com/coppercube/doc/images/tut_egoshooter3.jpg)
Недавно созданная камера от первого лица


Обратите внимание на желтый контур эллипсоида вокруг камеры. Это тело столкновения, в основном размером с человека, который ходит по сцене. Возможно, вам нужно отрегулировать размер этого эллипсоида, чтобы он соответствовал вашей сцене. Вы должны сделать его достаточно большим, чтобы пользователь мог подниматься по лестнице, но достаточно маленьким, чтобы проходить через двери.
Вы можете использовать инструмент масштабирования (клавиша «R»), чтобы изменить размер эллипсоида.

Кроме того, убедитесь, что желтый эллипсоид немного «парит» в воздухе и вначале не касается какой-либо стены или пола, иначе пользователь застрянет в этой стене в начальном приложении и не будет способен двигаться.
Вы можете проверить, в порядке ли ваша камера, протестировав ваше приложение, например, нажав Инструменты -> Тестировать как приложение Windows, и немного попробовать перемещаться в вашей 3D-сцене.

Теперь перейдите в окно свойств камеры, откройте вкладку 'Behaviors' «Поведения» и выберите поведение 'First Person Shooter style controlled' «Управление в стиле шутера от первого лица»:
 

(https://www.ambiera.com/coppercube/doc/images/dlg_cam_attributes.png)
Поведение созданной камеры


Вы можете установить различные параметры, такие как скорость движения или скорость вращения. Если вы хотите, чтобы камера могла летать, а не ходить, вы можете выбрать опцию 'CanFly' «Может летать», но для этого урока мы не используем эту функцию.
Вторым поведением в камере является поведение 'Collide when moved' «Столкновение при перемещении», которое влияет на то, как камера сталкивается с окружающими препятствиями. Вы можете настроить размер эллипсоида и положение камеры в эллипсоиде. Если вы хотите изменить гравитацию, отрегулируйте значение 'Gravity' «Гравитация», которое вы можете найти при выборе корневого узла сцены в SceneGraph Explorer.

Так что теперь у нас есть камера, которая может двигаться в трехмерном мире. Но для игры нам нужно немного больше.


Создание врагов
В качестве врагов мы будем использовать несколько анимированных персонажей. Предлагается 'Soldier' «Солдат» из набора (Prefabs), который поставляется с CopperCube. В окне набора моделей просто дважды щелкните  на модели "Animated soldier" «Анимированный солдат», и CopperCube создаст экземпляр этого персонажа в вашем трехмерном мире. Расположите солдата там, где вам больше нравится.




(https://www.ambiera.com/coppercube/doc/images/tut_egoshooter4.jpg)
Первый созданный враг


Если вы также используете динамические источники света в своей сцене, то можете лучше визуализировать солдата в сцене, выбрав его и открыв вкладку 'Materials' «Материалы», а затем выбрав 'Dynamic' «Динамический» в качестве освещения.
Этот персонаж просто анимированная 3D модель. Оно ничего не делает в игре, поэтому мы должны указать ему, что делать. Выберите солдата, откройте его вкладку поведения и добавьте к нему поведение  "Game Actor with Health (AI, Player, etc)" «Игрок со здоровьем (ИИ, Игрок и т. д.)»:

(https://www.ambiera.com/coppercube/doc/images/tut_egoshooter5.jpg)
Добавление поведения игровому актёру


Кроме того, необходимо, чтобы враг не мог проходить сквозь стены, как и камера игрока. Поэтому мы добавляем к нему поведение "Collide when moved" «Столкновение при перемещении» и корректируем его значения так, чтобы желтый эллипсоид помещался вокруг солдата:

(https://www.ambiera.com/coppercube/doc/images/tut_egoshooter6.jpg)
Поведение столкновения при перемещении добавлено к солдату


Если вы сейчас протестируете свое приложение, например, нажав "Tools -> Test as Windows Application" «Инструменты -> Тестировать как приложение Windows», вы увидите, что солдат будет случайным образом перемещаться в трехмерном мире. Он полностью нас игнорирует, но, по крайней мере, делает что-то полезное. Вы можете легко изменить его поведение в поведении "Game Actor with Health" «Игрок со здоровьем», см. его документацию на странице  Обзора поведений.

Вы увидите, что там есть много параметров, которые можно настроить. В этом примере мы настраиваем только одну вещь: прокрутите вниз до записи "ActionOnDie" «Дейстиве при наступлении смерти», выберите ее, нажмите кнопку «...» и в диалоговом окне "Edit Action" «Редактировать действие» добавьте действие "Change rotation of a scene node" «Изменить вращение узла сцены», со свойством "Change which scene node" «Изменить узел сцены», установленным на узел солдата, вектор, установите на «90.0, 0.0, 0.0», установите флажок "Rotate animated" «Поворот анимирован», а для параметра "Time to rotate" «Время поворота» установите значение 500 миллисекунд (полсекунды), как показано ниже:


(https://www.ambiera.com/coppercube/doc/images/tut_egoshooter7.jpg)
Действие которое начинается при смерти актера.


Это действие будет выполнено, когда актер умрет. Там может быть полезно добавить дополнительные действия, например, воспроизведение звука или что-то подобное, если хотите. Но действие, которое мы только что добавили, поворачивает персонажа так, что он выглядит так, как будто он падает на землю. Мы делаем это здесь, потому что 3D-модель солдата не имеет встроенной анимации «смерти». Вы увидите это в действии позже


Добавление оружия
Одной из главных особенностей игр от первого лица является то, что в них можно стрелять. Поэтому для этого нам нужно добавить оружие для игрока. Снова выберите камеру, которую мы создали ранее, перейдите на вкладку "Behaviors" «Поведения» и добавьте к ней поведение  "When a key is pressed do something" «Когда нажата какая-либо кнопка», ее можно найти в разделе  "Behaviors triggered by events" «Поведения, вызванные событиями». Это сделает стрельбу возможной. Вы можете выбрать любую клавишу, которую хотите, но для этого примера я выбрал  'Left Mouse button' «Левую кнопку мыши» в качестве клавиши выстрела. В поведении есть одна запись с именем  "Action" «Действие», выберите ее и нажмите кнопку «...», и в диалоговом окне редактирования действия добавьте действие "Shoot" «Выстрел», которое можно найти в разделе "Game and sound" «Игра и звук»:


(https://www.ambiera.com/coppercube/doc/images/tut_egoshooter8.jpg)
Действие Shoot "Выстрел" добавлено для камеры игрока.


Для действия при стрельбе мы устанавливаем в качестве "Damage" «Урона» значение около 55 (здоровье врага по умолчанию равно 100, поэтому вам придется попасть в него дважды), а затем нажимаем «ОК». По сути, это все.
Протестируйте свое приложение, если теперь вы нацелились на вражеского солдата и нажали левую кнопку мыши, он должен умереть после того, как вы дважды попали в него. По сути, вы только что создали очень простую игру-стрелялку или шутер от первого лица


Доработка игры
Конечно, игра далека от завершения. Много работы ещё нужно сделать, и в этом уроке это выходит за рамки объяснения каждой мелочи, но вот несколько советов, как доработать игру:
(https://www.ambiera.com/coppercube/doc/images/tut_egoshooter9.jpg)

(https://www.ambiera.com/coppercube/doc/images/tut_egoshooter10.jpg)

Вот и все, теперь вы сможете создавать игры-стрелялки или шутеры от первого лица в CopperCube самостоятельно.
Название: Re: CopperCube
Отправлено: Striver от 28 Апрель 2019, 21:05:18
Цитировать
Это тело столкновения, в основном размером с человека, который ходит по сцене.
Это тело столкновения, фактически имеющее размер идущего по сцене человека.

Цитировать
Вы можете проверить, в порядке ли ваша камера, протестировав ваше приложение, например, нажав Инструменты -> Тестировать как приложение Windows, и немного попробовать перемещаться в вашей 3D-сцене.
Вы можете проверить, в порядке ли ваша камера, протестировав ваше приложение, для этого, например, нажмите Инструменты -> Тестировать как приложение Windows, и попробуйте немного подвигаться по вашей 3D-сцене.

Цитировать
Вы можете легко изменить его поведение в поведении "Game Actor with Health" «Игрок со здоровьем», см. его документацию на странице  Обзора поведений.
Вы легко можете изменить то, как он себя ведёт, настроив поведение "Game Actor with Health" «Игрок со здоровьем», см. документацию об этом на странице Обзора поведений.

Цитировать
Но действие, которое мы только что добавили, поворачивает персонажа так, что он выглядит так, как будто он падает на землю.
Но действие, которое мы только что добавили, поворачивает персонажа таким образом, что он выглядит падающим на землю.

Цитировать
Одной из главных особенностей игр от первого лица является то, что в них можно стрелять.
Всё-таки не все игры от первого лица являются шутерами, поэтому:
Одной из главных особенностей шутеров от первого лица является то, что в них можно стрелять.

Цитировать
Поэтому для этого нам нужно добавить оружие для игрока.
Для этого нам нужно добавить игроку оружие.

Цитировать
Много работы ещё нужно сделать, и в этом уроке это выходит за рамки объяснения каждой мелочи, но вот несколько советов, как доработать игру:
Много работы ещё нужно сделать, а объяснение каждой мелочи выходит за рамки этого урока, но вот несколько советов, как доработать игру:

Цитировать
Затем вам, вероятно, нужно немного отрегулировать её положение и вращение, чтобы всё хорошо вписывалось в экран.
Затем вам, вероятно, понадобится немного отрегулировать её положение и вращение, чтобы всё хорошо вписывалось в экран.

Цитировать
В игре модель оружия будет прикреплена к камере, будет следовать за ней и будет видна игроку, как это сделано в играх от первого лица.
В игре модель оружия будет прикреплена к камере, будет следовать за ней и будет видна игроку, как это обычно реализуется в играх от первого лица.

Цитировать
Например, где-то в сцене установлен объект звук, при попадание в радиус которого, солдат произносит что-то с удивлением.
Например, где-то в сцене установлен объект звук, при попадании в радиус которого, солдат с удивлением что-то произносит.
Название: Re: CopperCube
Отправлено: Samovar от 28 Апрель 2019, 22:27:14
Благодарю. Поправил. Ехаем дальше потихоньку...
Название: Re: CopperCube
Отправлено: Samovar от 29 Апрель 2019, 19:06:25
Урок: Создание пролёта камеры

Из этого урока вы узнаете, как создать полёт камеры через трехмерный мир с помощью CopperCube, используя функцию 'Path' «Путь». Окончательное приложение может выглядеть так:

(https://www.ambiera.com/coppercube/doc/images/tut_camera_flight.jpg)
Итоговое приложение


Начало: Создайте свою 3D-сцену
Для начала нам нужна 3D-сцена, где мы можем пролететь с камерой. Импортируйте 3D-модель, добавьте скайбокс, источники света и все, что захотите, пока вас не устроит 3D-сцена. В этом примере я использовал  3D-модель комнаты с запечёнными в карту (изображение) освещением (lightmap), вы можете найти модель в каталоге примеров с именем файла lightmaps.ccb, если захотите её использовать:

(https://www.ambiera.com/coppercube/doc/images/tut_camera_flight2.jpg)
Сцена для этого примера


Определение пути
Как только вы настроите свою сцену, перейдем к важной части. В этом примере мы хотим, чтобы камера двигалась по траектории. Итак, нам нужно создать путь. Для этого просто создайте новый объект пути: нажмите на вкладку  'Create' «Создать» и кликните значок с изображением пути, чтобы создать новый путь (в качестве альтернативы используйте меню: 'Edit -> Insert -> Create a Path' «Правка -> Вставить -> Создать путь»).
Должен появиться новый путь с 3 узлами:

(https://www.ambiera.com/coppercube/doc/images/tut_camera_flight3.jpg)
Созданный путь


Выбирая узлы пути, вы можете перемещать их и редактировать путь по которому камера будет следовать через трехмерную сцену. Если вам нужно более 3 узлов в пути, то, когда путь выбран, нажмите кнопку 'Create a path node' «Создать узел пути» на вкладке 'Create' «Создать» или используйте меню 'Edit -> Insert -> Create a path node' «Правка -> Вставить -> Создать узел пути».

(https://www.ambiera.com/coppercube/doc/images/tut_camera_flight4.jpg)
Готовый путь


Если вы хотите, чтобы путь был замкнутым, перейдите в окно свойств пути и включите опцию 'IsClosedCircle'  «Замкнутый круг»:

(https://www.ambiera.com/coppercube/doc/images/dlg_path_attributes.png)
Как будет перемещаться целевая камера


Кроме того, вы также можете изменить сглаженность кривой всего пути. Например, 'Tighness' «Натяжение» 0 приведет к тому, что сегменты пути от узла к узлу станут прямыми линиями.


Заставляем камеру следовать по пути
Итак, теперь мы определили путь, но камера еще не движется по нему. Настало время изменить эту ситуацию. Просто создайте новую камеру, нажав на вкладку 'Create' «Создать» и кликните значок с изображением камеры, (в качестве альтернативы используйте меню: 'Edit -> Insert -> Create a Camera' «Правка -> Вставить -> Создать камеру»).
Должно появиться диалоговое окно:

(https://www.ambiera.com/coppercube/doc/images/dlg_add_camera.jpg)
Диалоговое окно создания камеры


Выберите 'Simple camera' «Простая камера». Это создаст новую камеру и выделит ее.
Теперь перейдите в окно свойств камеры, откройте вкладку 'Behaviors' «Поведения» и нажмите кнопку «+», чтобы добавить новое поведение:

(https://www.ambiera.com/coppercube/doc/images/dlg_cam_behaviors.png)
Добавление поведения 'Follow a Path' «Следовать по пути»


Выберите поведение 'Follow a Path' «Следовать по пути». Это добавит поведение к камере, заставляющие камеру двигаться по выбранному пути. Вам нужно только указать по какому пути следовать камере. Выберите путь, который вы создали в слоте 'PathToFollow' «Путь следования». Путь, вероятно, будет называться 'Path1'.
 
(https://www.ambiera.com/coppercube/doc/images/dlg_path_anim_attributes.png)
Свойства поведения 'Follow Path' «Следовать по пути»


Если вы хотите, чтобы камера была направлена ​​в направлении движения, установите флажок  'LookIntoMovementDirection' «Смотреть в направлении движения».

Если вы теперь снимите флажок со свойством  'OnlyMoveWhenCameraActive' «Перемещаться только когда камера активна», то увидите, что камера уже перемещается по пути в редакторе. Но вы можете и проверить полет вашей камеры, протестировав ваше приложение (меню:  'Tools -> Test as Windows Application (.exe)' «Инструменты» -> Проверить как приложение Windows (.exe)» ). Если у вас более одной камеры в сцене, убедитесь, что для камеры с поведением следования по пути включен параметр  'Active' «Активна» во вкладке атрибутов 'Attributes' окна её свойств 'Properties'.
Название: Re: CopperCube
Отправлено: Striver от 29 Апрель 2019, 21:33:04
Цитировать
В этом примере я использовал 3D-модель комнаты с запечёнными в карту (изображение) освещением (lightmap), вы можете найти модель в каталоге примеров с именем файла lightmaps.ccb, если захотите её использовать:
В этом примере я использовал 3D-модель комнаты с запечённым в карту (изображение) освещением (lightmap). Вы можете найти эту модель в каталоге примеров с именем файла lightmaps.ccb, если захотите её использовать:

Цитировать
Выбирая узлы пути, вы можете перемещать их и редактировать путь по которому камера будет следовать через трехмерную сцену.
Выбирая узлы пути, вы можете перемещать их и редактировать путь, по которому камера будет следовать через трехмерную сцену.

Цитировать
Просто создайте новую камеру, нажав на вкладку 'Create' «Создать» и кликните значок с изображением камеры, (в качестве альтернативы используйте меню: 'Edit -> Insert -> Create a Camera' «Правка -> Вставить -> Создать камеру»).
Просто создайте новую камеру, нажав на вкладку 'Create' «Создать», и кликните значок с изображением камеры, (в качестве альтернативы используйте меню: 'Edit -> Insert -> Create a Camera' «Правка -> Вставить -> Создать камеру»).

Цитировать
Это добавит поведение к камере, заставляющие камеру двигаться по выбранному пути.
Это добавит поведение к камере, заставляющее её двигаться по выбранному пути.

Цитировать
Вам нужно только указать по какому пути следовать камере.
Вам нужно только указать, по какому пути следовать камере.

Цитировать
Если вы хотите, чтобы камера была направлена ​​в направлении движения, установите флажок  'LookIntoMovementDirection' «Смотреть в направлении движения».
Если вы хотите, чтобы камера была направлена ​​в сторону движения, установите флажок 'LookIntoMovementDirection' «Смотреть в направлении движения».
Название: Re: CopperCube
Отправлено: Samovar от 29 Апрель 2019, 22:55:33
Спасибо, Striver. Поправил.
Название: Re: CopperCube
Отправлено: Samovar от 01 Май 2019, 17:28:55
Урок: Создание просмотровщика 3D-модели

Из этого урока вы узнаете, как создать простое приложение для просмотра 3D-моделей с помощью CopperCube, управляя мышью, позволяющее просматривать 3D-модели со всех сторон. Окончательное приложение может выглядеть так:

(https://www.ambiera.com/coppercube/doc/images/tut_model_viewer.jpg)
Итоговое приложение


Начало: Создайте свою 3D-сцену
Для начала нам нужна 3D-сцена, в которой мы будем просматривать со всех сторон 3D-модель. Импортируйте 3D-модель, которую хотите просмотреть в приложении, добавьте скайбокс, источники света и все, что угодно, пока вас не устроит 3D-сцена. В этом примере я использовал 3D-модель здания, добавил скайбокс, несколько деревьев и вертикальные билборды для изображения людей:

(https://www.ambiera.com/coppercube/doc/images/tut_model_viewer2.jpg)
Сцена для этого примера


Определение контроллера камеры
После того, как вы настроили свою сцену, к важной части: нам нужен контроллер камеры, который может перемещаться по зданию в середине сцены и показывать здание со всех сторон. Для этого просто создайте новую камеру. Для этого нажмите на вкладку 'Create' «Создать» и кликните значок с изображением камеры (в качестве альтернативы используйте меню: 'Edit -> Insert -> Create a Camera' «Правка -> Вставить -> Создать камеру»).
Вот, как это должно выглядеть:

(https://www.ambiera.com/coppercube/doc/images/dlg_add_camera.jpg)
Диалоговое окно создания камеры


Выберите 'Model Viewer Camera' «Камера обзора модели» и нажмите «OK».
Теперь должна быть создана и выделена новая камера, а вокруг нее нарисованы контуры желтой сферы:


(https://www.ambiera.com/coppercube/doc/images/tut_model_viewer3.jpg)
Недавно созданная камера


Эта камера может вращаться вокруг центра: 'Camera target' «Цель камеры». Он отмечен серым квадратом, соединенным с камерой серой линией. Вы можете выделить цель камеры и переместить ее:

(https://www.ambiera.com/coppercube/doc/images/editor_camera_target.jpg)
Перемещение цели камеры


В данном случае цель камеры должна быть помещена в середину здания, чтобы камера могла двигаться вокруг него.
При перемещении цели камеры вы можете заметить, что и сама камера будет следовать за целью на постоянном удалении от неё. Это связано с тем, что камера всегда  находится на постоянном расстояние радиуса желтой сферы от центра. Чтобы изменить радиус, просто выберите камеру и перейдите на вкладку  'Behaviors' «Поведения». В окне свойств выберите поведение  'Model viewer camera style controlled' «Стиль камеры обзора модели»:

(https://www.ambiera.com/coppercube/doc/images/dlg_modelviewer_attributes.png)
Редактирование поведения обзора модели


Отрегулируйте значение радиуса так, чтобы вся 3D-сцена находилась внутри контуров желтой сферы:

(https://www.ambiera.com/coppercube/doc/images/tut_model_viewer4.jpg)
Радиус достаточно велик, чтобы позволить камере вращаться вокруг всей сцены


На этом всё. Если вы сейчас протестируете приложение (меню: 'Tools -> Test as WindowsApplication (.exe)' «Инструменты -> Тестировать как приложение Windows (.exe)» ), то сможете вращаться вокруг вашей 3D-сцены с помощью мыши. Если в сцене более одной камеры, убедитесь, что на вкладке атрибутов (Attributes) окна свойств (Propertiies) для камеры с поведением 'Model viewer camera style controlled' «Стиль камеры обзора модели» включен параметр 'Active' «Активна».
Название: Re: CopperCube
Отправлено: Striver от 01 Май 2019, 22:36:06
Цитировать
Из этого урока вы узнаете, как создать простое приложение для просмотра 3D-моделей с помощью CopperCube, управляя мышью, позволяющее просматривать 3D-модели со всех сторон.
Из этого урока вы узнаете, как в CopperCube создать простое приложение для просмотра 3D-моделей, в котором, используя управление мышью, можно рассматривать 3D-модели со всех сторон.

Цитировать
После того, как вы настроили свою сцену, к важной части: нам нужен контроллер камеры, который может перемещаться по зданию в середине сцены и показывать здание со всех сторон.
После того, как вы настроили свою сцену, перейдём к самой важной части: нам нужен контроллер камеры, который может перемещаться вокруг здания в середине сцены и показывать это здание со всех сторон.

Цитировать
Для этого просто создайте новую камеру. Для этого нажмите на вкладку 'Create' «Создать» и кликните значок с изображением камеры (в качестве альтернативы используйте меню: 'Edit -> Insert -> Create a Camera' «Правка -> Вставить -> Создать камеру»).
Два раза подряд "для этого", надо как-то разгрести... например, так:
Просто создайте новую камеру. Для этого нажмите на вкладку 'Create' «Создать» и кликните значок с изображением камеры (в качестве альтернативы используйте меню: 'Edit -> Insert -> Create a Camera' «Правка -> Вставить -> Создать камеру»).

Цитировать
Вот, как это должно выглядеть:
Вот как это должно выглядеть:

Цитировать
Это связано с тем, что камера всегда  находится на постоянном расстояние радиуса желтой сферы от центра.
Это связано с тем, что камера всегда находится от центра на постоянном расстоянии, равном радиусу желтой сферы.
Название: Re: CopperCube
Отправлено: Samovar от 02 Май 2019, 15:22:17
Спасибо, Striver! Поправил.
Название: Re: CopperCube
Отправлено: Samovar от 02 Май 2019, 16:09:39
Урок: Использование камеры от третьего лица

Из этого урока вы узнаете, как с помощью CopperCube создать контроллер камеры от третьего лица, то есть камеру, которая следует за анимированным персонажем, перемещающимся по трёхмерному миру.


Начало: Создайте свою 3D-сцену
Для начала нам нужна 3D-сцена, по которой мы можем перемещаться. Импортируйте 3D-модель, добавьте скайбокс, источники света и всё, что захотите, пока вас не устроит 3D-сцена. В этом уроке я использовал создатель комнат, чтобы создать простую комнату, которая выглядит следующим образом:

(https://www.ambiera.com/coppercube/doc/images/tut_thirdpersoncamera.jpg)
Сцена для этого примера


Вы можете использовать создатель комнат, встроенный в CopperCube, выбрав команду  'Edit -> Insert -> Create a room mesh from a 2D map' «Правка -> Вставить -> Создать полигональную сетку комнаты (меш) из 2D-карты», и нарисовать там план простой комнаты (клетками размером 3x3 условных метра, максимум 20x20 клеток, то есть 60x60xВысоту стен в метрах, и в зависимости от типа потолка: крыша аркой, плоский или без потолка).


Добавление анимированного персонажа
После того, как вы настроили свою сцену, вам понадобится анимированный персонаж, за спиной которого будет размещена камера от третьего лица. В этом уроке мы используем 'Clerk' «Клерка» из окна 'Prefabs' «Ресурсы»: просто дважды кликните значок 'animated clerk' «анимированный клерк» в окне ресурсов, и разместите анимированную 3D-модель в вашей сцене:

(https://www.ambiera.com/coppercube/doc/images/tut_thirdpersoncamera2.jpg)
Анимированный персонаж для нашей сцены


Чтобы заставить этого персонажа двигаться, когда мы нажимаем кнопки на клавиатуре, нам нужно добавить к нему поведение. Выберите клерка, откройте окно 'Behaviors' «Поведения» и добавьте 'Object or Person controlled by keyboard' «Объект или персонаж, управляемый с клавиатуры»:

(https://www.ambiera.com/coppercube/doc/images/tut_thirdpersoncamera3.jpg)
Добавление поведения 'Object or Person controlled by keyboard' «Объект или персонаж, управляемый с клавиатуры»


Если хотите чтобы клерк двигался чуть реалистичнее, то настройте свойство 'MoveSpeed'  «Скорость движения» ​​этого объекта на меньшее значение, например 0.02. Кроме того, если вы не хотите чтобы клерк мог проходить сквозь стены, то добавьте к нему поведение 'Collide when moved' «Столкновение при перемещении». Когда вы это сделаете, обязательно отрегулируйте желтый эллипсоид так чтобы он окружал клерка и  не застревал в стенах или в полу.

Примечание. Конечно, вы не обязаны использовать анимированного персонажа типа клерк, для модели, которой хотите управлять, и следите за ней с помощью камеры от третьего лица. Для этого вы также можете использовать другой, даже не анимированный 3D-объект.


Добавление камеры
После того, как вы настроили свою сцену, перейдём к самой важной части: нам нужна камера от третьего лица. Чтобы создать новую камеру, нажмите на вкладку  'Create' «Создать» и кликните значок с изображением камеры (в качестве альтернативы используйте меню: 'Edit -> Insert -> Create a Camera'  «Правка -> Вставить -> Создать камеру»).
Должно появиться диалоговое окно создания камеры:

(https://www.ambiera.com/coppercube/doc/images/dlg_add_camera.jpg)
Диалоговое окно создания камеры


Выберите 'Third Person Camera' «Камера от третьего лица». Это создаст новую камеру и выделит ее. Также вам будет предложено выбрать объект за котором она должна следовать. Для этого выберите объект клерк. В 3D-сцене переместите камеру за спину клерка на расстояние и угол, на которых она будет следовать за этим персонажем:

(https://www.ambiera.com/coppercube/doc/images/tut_thirdpersoncamera4.jpg)
Камера от третьего лица расположенная позади персонажа


Теперь вы также можете настроить некоторые значения, такие как 'FollowMode' «Режим следования», 'FollowSmoothingSpeed' « Сглаживание скорости следования» и если камера не должна проходить сквозь стены 'CollideWithWorld' «Сталкиваться с миром». Подробности об этих настройках смотрите на странице описания поведений в разделе  '3rd Person Camera Style controlled' «Стиль камеры от третьего лица».

В принципе, вот и всё. Теперь вы можете "ходить" вашим 3D-персонажем, за которым следует камера, когда протестируете полученное приложение (меню: 'Tools -> Test as WindowsApplication (.exe)' «Инструменты -> Тестировать как приложение Windows (.exe)» ).
Название: Re: CopperCube
Отправлено: Samovar от 02 Май 2019, 20:02:39
Урок: Создание 3D-конфигуратора

Из этого урока вы узнаете как использовать поведения и действия для создания простого 3D-конфигуратора в  CopperCube. Вы сможете нажимать на кнопки, чтобы  переключать вид на 3D-модель из 3D-камеры и изменять текстуры 3D-модели.


Начало: Создайте свою 3D-сцену
Для начала нам нужна 3D-модель, которую мы хотим показать в конфигураторе. Импортируйте 3D-модель, добавьте скайбокс и все, что захотите, пока вас не устроит полученная 3D-сцена. Вы также можете использовать команды: 'Edit -> Insert -> 'Create plane and Create box'  «Правка -> Вставить -> Создать плоскость и Создать куб» или ресурсы (Prefabs), чтобы создать очень простую сцену в целях тестирования этого урока. Сцена, которую я использую в этом примере, выглядит следующим образом: простая 3D-модель автомобиля на местности (terrain) и небо (skybox):

(https://www.ambiera.com/coppercube/doc/images/tut_configurator.jpg)
Сцена для этого примера


Добавление камеры
После того, как вы настроили свою сцену, перейдём к следующей важной части: во-первых, нам нужна камера, чтобы мы могли изменять ее положение, когда пользователь нажимает кнопку. Перейдите на вкладку  'Create' «Создать» и кликните значок с изображением камеры (в качестве альтернативы используйте меню: 'Edit -> Insert -> Create a Camera' «Правка -> Вставить -> Создать камеру»).
Должно появиться диалоговое окно создания камеры:

(https://www.ambiera.com/coppercube/doc/images/dlg_add_camera.jpg)
Диалоговое окно создания камеры


Выберите 'Simple Camera' «Простая камера». Это создаст новую камеру и выделит её. Разместите камеру где-нибудь рядом с вашей 3D-моделью и переместите цель камеры в центр 3D-модели. Теперь сцена должна выглядеть примерно так:

(https://www.ambiera.com/coppercube/doc/images/tut_configurator2.jpg)
Недавно созданная камера с целью направленной на 3D-модель


Добавление 2D-наложений в виде кнопок
Теперь нам нужны кнопки на которые пользователь сможет нажать. На вкладке 'Create' «Создать» нажмите значок 'Create 2D overlay item' «Создать 2D-наложение», либо используйте меню: 'Edit -> Insert -> Create 2D overlay item' «Редактировать -> Вставить -> Создать 2D-наложение», и нарисуйте 3 кнопки. Измените текст первых двух кнопок на название той позиции камеры, в которую вы хотели бы её переместить относительно 3D-модели, например 'Front' «Спереди» и 'Rear' «Сзади» в данном примере. Третья кнопка используется для изменения текстуры 3D-модели. Введите у неё текст, например, 'Change' «Изменить», для изменения текстуры автомобиля. Все это можно сделать с помощью вкладки 'Attributes' «Атрибуты» в окне свойств 'Properties', когда выбран объект 2D-наложения.

Конечно, вы можете называть кнопки так, как вам нравится. В моем примере 2D-кнопки наложения выглядят так:

(https://www.ambiera.com/coppercube/doc/images/tut_configurator3.jpg)
Добавлены три 2D-наложения, чтобы использовать их в качестве кнопок


Добавление объектов для 3D-позиций камеры
Сделаем так, чтобы камера перемещалась в заданное положение, когда пользователь нажимает на одну из первых двух кнопок. Мы могли бы вводить трехмерные координаты и вручную, но гораздо проще переместить трехмерный объект в эти позиции. Поэтому мы просто создадим 2 билборда (используйте вкладку 'Create' «Создать» и нажмите значок 'Create a Billboard' «Создать билборд», либо через меню 'Edit -> Insert -> Create a Billboard' «Редактировать -> Вставить -> Создать билборд») и разместим их тех в трехмерных позициях, в которые должна перемещаться камера, когда пользователь нажимает на одну из двух кнопок:

(https://www.ambiera.com/coppercube/doc/images/tut_configurator4.jpg)
Билборды отмечающие 3D-позиции камеры


Как только вы убедитесь, что позиции билбордов в порядке, сделайте их невидимыми, используя вкладку  'Attributes' «Атрибуты» в окне 'Properties' «Свойства», так как мы не хотим, чтобы они появлялись в сцене (просто снимите флажок со свойства 'Visible' «Видимый»).
Следующий шаг состоит в том, чтобы заставить камеру перемещаться в позиции билбордов, когда пользователь нажимает на соответствующие кнопки. Выберите первое 2D-наложение и перейдите на вкладку 'Behaviors' «Поведения» в окне 'Properties' «Свойства». Нажмите кнопку «+», чтобы добавить новое поведение, и выберите 'When clicked do something' «По нажатию сделать что либо». Новое поведение будет добавлено и выглядеть так:

(https://www.ambiera.com/coppercube/doc/images/dlg_bahaviorclicked.jpg)
Добавление поведения при нажатии на 2D-наложение


Выберите строку 'Action' «Действие» и нажмите кнопку «...», чтобы создать новое действие, которое должно запускаться при нажатии на 2D-наложение. Откроется диалоговое окно 'Edit actions' «Редактирование действий», и вы сможете нажать кнопку «+» здесь, чтобы добавить новое действие. Выберите действие 'Change position of scene node' «Изменить позицию узла сцены». Новое действие будет добавлено и выглядеть так:

(https://www.ambiera.com/coppercube/doc/images/dlg_actionchangeposition.png)
Созданное действие 'Change position of a scene node' «Изменить позицию узла сцены»


Теперь нам осталось только указать, что и как нужно перемещать. В значении 'Set position type' «Установить тип позиции» выберите 'Set relative to a scene node' «Установить относительно узла сцены», так как мы хотим установить позицию камеры в позицию одного из билбордов, которые мы создали ранее. В 'Change which SceneNode' «Изменить узел сцены» нам, конечно, нужно выбрать камеру. Нажмите на надпись <Select> «<Выбрать>» из выпадающего списка, и в появившемся диалоговом окне древовидного вида сцены выберите узел камеры. В поле 'Change which SceneNode' «Относительно какого узла сцены» выберите билборд, чтобы указать конечную позицию камеры. И, наконец, установите флажок 'Move animated' «Перемещать с анимацией», чтобы положение камеры не изменялось мгновенно, а плавно перемещалось в новую позицию. Действие теперь должно выглядеть примерно так:

(https://www.ambiera.com/coppercube/doc/images/dlg_actionchangeposition2.png)
Действие 'Change position of a scene node' «Изменить позицию узла сцены» для перемещения камеры


В основном, всё. Если вы сейчас опубликуете сцену (используйте меню 'Tools' -> 'Test as xxx application' «Инструменты» -> «Тестировать как приложение xxx») и нажмёте на кнопку, то камера должна переместиться в положение билборда. Отлично!

Чтобы это работало и со второй кнопкой, просто повторите шаги описанные выше, и задайте для нее поведение 'When clicked...' «По нажатию...» с действием 'Change position of a scene node' «Изменить позицию узла сцены», как и для первого 2D-наложения. Конечно, вы можете добавить больше  2D-наложений с похожим поведением, если хотите добавить новые позиций камеры для просмотра вашей 3D-модели.


Заставляем третью кнопку изменять текстуру 3D-модели
При нажатии на третью кнопку мы не хотим перемещать камеру, а хотим изменить текстуру 3D-модели. Надеюсь, вы заметили, что добавить поведение и действие к 2D-наложению, действительно легко. Выполните следующие шаги для третьей кнопки:
Вот и все, теперь вы можете легко создавать 3D-конфигураторы.
Название: Re: CopperCube
Отправлено: Striver от 03 Май 2019, 10:34:45
Цитировать
« Ответ #34 : 01 Май 2019, 16:28:55 »
Урок: Создание просмотровщика 3D-модели
Цитировать
« : 02 Май 2019, 15:09:39 »
Урок: Использование камеры от третьего лица
Цитировать
« : 02 Май 2019, 19:02:39 »
Урок: Создание 3D-конфигуратора

"Остапа понесло. Он почувствовал прилив новых сил и шахматных идей.
Ослепительные перспективы развернулись перед васюкинскими любителями. Пределы комнаты расширились. Гнилые стены коннозаводского гнезда рухнули, и вместо них в голубое небо ушел стеклянный тридцатитрехэтажный дворец шахматной мысли. В каждом его зале, в каждой комнате и даже в проносящихся пулей лифтах сидели вдумчивые люди и играли в шахматы на инкрустированных малахитом досках…" (Двенадцать стульев)
 ;D
Название: Re: CopperCube
Отправлено: Striver от 03 Май 2019, 10:48:27
Цитировать
Кроме того, если вы не хотите чтобы клерк мог проходить сквозь стены, то добавьте к нему поведение 'Collide when moved' «Столкновение при перемещении».
Кроме того, если вы не хотите, чтобы клерк мог проходить сквозь стены, то добавьте к нему поведение 'Collide when moved' «Столкновение при перемещении».

Цитировать
Когда вы это сделаете, обязательно отрегулируйте желтый эллипсоид так чтобы он окружал клерка и  не застревал в стенах или в полу.
Когда вы это сделаете, обязательно отрегулируйте желтый эллипсоид так, чтобы он окружал клерка и не застревал в стенах или в полу.

Цитировать
Конечно, вы не обязаны использовать анимированного персонажа типа клерк, для модели, которой хотите управлять, и следите за ней с помощью камеры от третьего лица.
Конечно, вы не обязаны использовать анимированного персонажа типа клерк для модели, которой хотите управлять и следить за ней с помощью камеры от третьего лица.

Цитировать
Также вам будет предложено выбрать объект за котором она должна следовать.
Также вам будет предложено выбрать объект, за которым она должна следовать.

Цитировать
Камера от третьего лица расположенная позади персонажа
Камера от третьего лица, расположенная позади персонажа

Цитировать
Теперь вы также можете настроить некоторые значения, такие как 'FollowMode' «Режим следования», 'FollowSmoothingSpeed' « Сглаживание скорости следования» и если камера не должна проходить сквозь стены 'CollideWithWorld' «Сталкиваться с миром».
Теперь вы также можете настроить некоторые значения, такие как 'FollowMode' «Режим следования», 'FollowSmoothingSpeed' « Сглаживание скорости следования» и, если камера не должна проходить сквозь стены, 'CollideWithWorld' «Сталкиваться с миром».
Название: Re: CopperCube
Отправлено: Samovar от 03 Май 2019, 19:45:04
Поправил.
Цитировать
Остапа понесло.
Бывает  ;D
Название: Re: CopperCube
Отправлено: Samovar от 03 Май 2019, 21:51:29
Создание сценария действия с помощью JavaScript

Самым простым дополнением CopperCube, является программирование сценария действия. По сути, это действие, которое ведет себя как встроенное, но было создано вами или другим пользователем с помощью  JavaScript. Для начала создайте новый файл в каталоге расширений (Documents\CopperCube\extensions в Windows или ~/Documents/CopperCube/extensions в Mac OS X) и назовите его «action_MovePosition.js». Откройте его в текстовом редакторе и наполните следующим текстом:

Код
/*  <action jsname="action_MovePosition" description="Move Position">
      <property name="MoveBy" type="vect3d" default="0.0, 5.0, 0.0" />
    </action>
*/


action_MovePosition = function()
{
};


// вызывается при выполнении действия
action_MovePosition.prototype.execute = function(currentNode)
{
  var oldPos = ccbGetSceneNodeProperty(currentNode, "Position");   
  var newPos = oldPos.add(this.MoveBy);   
  ccbSetSceneNodeProperty(currentNode, "Position", newPos);
   


Если вы перезапустите CopperCube, то будет доступно новое действие с именем «Move Position». Обратите внимание, что если вы вносите изменения в этот файл, то вам больше не нужно перезапускать CopperCube, это необходимо только для новых действий, или таких действий, для которых изменился заголовок XML.

Теперь в сцене CopperCube по умолчанию, нажмите на 3D-куб «cubeMesh1», выберите вкладку 'Behavior' «Поведения», нажмите «+», чтобы добавить новое поведение, выберите "Behaviors triggered by events -> When clicked on this do something" «Поведения, вызванные событиями -> При нажатии сделать что либо», и в свойстве 'Action' «Действие» нажмите кнопку «...», чтобы добавить новое действие. В открывшемся диалоговом окне действий вы увидите наше новое действие, в разделе 'Scripted Actions' «Сценарии действий» (возможно, помимо других существующих действий):

(https://www.ambiera.com/coppercube/doc/images/scripted_action_moveposition.png)

Если вы теперь запустите приложение, например, как Windows .exe или Mac OS X .app, и нажмете на куб, то это действие будет выполнено, и куб, к которому прикреплено действие, будет перемещаться по вектору, указанному в «MoveBy». Ваше первое действие заработало!

Далее будет описано, как это работает и как это можно расширить.


Задание параметров
Возможно, вы заметили, что действие «MovePosition» (Переместить в позицию), которое мы создали выше, имело один параметр с именем «MoveBy» (Переместить по). Это трехмерный вектор, определяющий длину и направление перемещения узла:

(https://www.ambiera.com/coppercube/doc/images/scripted_action_parameters.png)


И если вы еще раз внимательно посмотрите на исходный код JavaScript, то заметите у него в заголовке небольшую XML-часть, определяющую это свойство MoveBy:
Код
/*  <action jsname="action_MovePosition" description="Move Position">
      <property name="MoveBy" type="vect3d" default="0.0, 5.0, 0.0" />
    </action>
*/
В этом коде JavaScript вся часть XML находится внутри комментария JavaScript между (/ * и * /), так что не мешает JavaScript. Но CopperCube читает его, чтобы показать параметры в редакторе,  и для удобства их изменения пользователями. Как видите, параметр MoveBy имеет тип vect3d, то есть, это трехмерный вектор. Существует несколько поддерживаемых типов параметров, например, для выбора цветов, узлов сцены и другие:


Имя
Описание
Пример

int
Целочисленное значение   
<property name="SomeIntValue" type="int" default="500" />

float 
Вещественное значение с плавающей точкой  
<property name="SomeNumber" type="float" default="1.2" />

string   
Строка текста   
<property name="SomeText" type="string" default="Hello World" />

bool   
Булево значение истина/ложь   
<property name="TrueOrFalse" type="bool" default="true" />

color   
Цвет (шестнадцатеричное число)   
<property name="MyColor" type="color" default="ff0000ff" />

vect3d   
3D-вектор или 3D-позиция   
<property name="MyPos" type="vect3d" default="0.1, 34.0, 0.0" />

scenenode  
Ссылка на узел 3D-сцены   
<property name="ToHide" type="scenenode" />

texture   
Текстура   
<property name="Floor" type="texture" default="C:\test.png" />

action 
Одно или несколько действий. Могут быть запущены вызовом ccbInvokeAction   
<property name="DoWhat" type="action" />



Чтобы опробовать это, мы добавим некоторые свойства к действию Move Position: расширим Move Position цветом, строкой текста и ссылкой на узел сцены. Кроме того, мы добавим код для использования выбранной ссылки на узел сцены вместо текущего узла (использование параметра 'currentNode' (текущий узел) было заменено на 'this.MoveWhat' (что двигать) в коде JavaScript ниже). Отредактируйте и сохраните содержимое action_MovePosition.js, файл должен выглядеть так:

Код
/* <action jsname="action_MovePosition" description="Move Position">
    <property name="MoveBy" type="vect3d" default="0.0, 5.0, 0.0" />
    <property name="MoveWhat" type="scenenode" />
    <property name="TestColor" type="color" default="ff00ff00" />
    <property name="TestText" type="string" default="Hello World!" />
 </action>
*/

action_MovePosition = function()
{
};

// вызывается при выполнении действия
action_MovePosition.prototype.execute = function(currentNode)
{
  var oldPos = ccbGetSceneNodeProperty(this.MoveWhat, "Position");   
  var newPos = oldPos.add(this.MoveBy);   
  ccbSetSceneNodeProperty(this.MoveWhat, "Position", newPos);
}

Изменения в коде JavaScript будут автоматически обнаруживаться CopperCube, а изменения заголовка XML - нет, поэтому существующие действия не будут уничтожены. Чтобы изменения появились в CopperCube, либо перезапустите CopperCube, либо выберите "Edit -> Plugins -> Reload and Verify Extensions and Plugins" «Правка -> Плагины -> Перезагрузить и проверить расширения и плагины». После этого удалите и воссоздайте это действие в поведении «клика мышью» на кубе. В противном случае вы увидите только исходные параметры. Как только вы создадите новое действие 'Move Position' «Переместить в позицию», оно будет выглядеть отражая все параметры, которые мы добавили выше:

(https://www.ambiera.com/coppercube/doc/images/scripted_action_moveposition2.png)


Поскольку мы изменили код JavaScript, чтобы использовать свойство 'MoveWhat' «Что двигать» для изменения положения узла сцены, теперь вам нужно выбрать узел сцены в свойстве  'MoveWhat', на который следует повлиять. В противном случае вы, вероятно, получите ошибку при выполнении действия.

Свойства в системе сценариев CopperCube работают следующим образом: во время выполнения CopperCube устанавливает свойства экземпляра класса действия в соответствии со свойствами, выбранными пользователем в редакторе. Если ранее вы создали параметр с именем 'TestColor', то  в классе Javascript будет свойство 'TestColor' со значением цвета выбранного пользователем. Вы можете получить к нему доступ с помощью кода 'this.TestColor'.


Код
Теперь более подробно рассмотрим другие свойства XML включенные в код перед действием расширения:
Код
<action jsname="action_MovePosition" description="Move Position">
...

Верхняя строка с тегом 'action' указывает имя действия и добавляет описание, которое будет показано в редакторе. Обратите внимание, что имя действия "action_MovePosition" в этом случае должно совпадать с именем файла и с классом JavaScript, который вы создаете в этом файле. Иначе действие не сработает.

Теперь взгляните на первые две строки кода JavaScript:

Код
action_MovePosition = function()
{
};

Это, в основном, только определяет наш класс JavaScript, названный 'action_MovePosition'. Если хотите, то в функции вы можете добавить код для инициализации членов вашего класса, но поскольку это действие, и оно в основном создается и выполняется только один раз, а затем снова удаляется, то в большинстве случаев этого не требуется.
Следующая часть самая важная. Код, который выполняется, когда CopperCube вызывает действие:

Код
// вызывается при выполнении действия 
action_MovePosition.prototype.execute = function(currentNode)
{
  var oldPos = ccbGetSceneNodeProperty(this.MoveWhat, "Position");   
  var newPos = oldPos.add(this.MoveBy);   
  ccbSetSceneNodeProperty(this.MoveWhat, "Position", newPos);
}


Этот код создает функцию в классе 'action_MovePosition' с именем 'execute'. Execute() вызывается CopperCube при выполнении действия. Единственный параметр - это ссылка на узел сцены, который является 'current' «текущим». Например, если это действие вызывается поведением "When clicked do something" «При нажатии сделать что либо», тогда это узел сцены на который кликнул пользователь. В нашем примере этот параметр не используется, мы используем свойство 'this.MoveWhat' действия, задаваемого пользователем.

Код работает следующим образом: функция ccbGetSceneNodeProperty() возвращает трехмерное положение узла сцены как тип vector3d. Затем мы добавляем вектор, указанный пользователем и сохраняемый в свойстве действия this.MoveBy.

Наконец, новая позиция узла сцены устанавливается с помощью  ccbSetSceneNodeProperty(). И на этом всё.

Теперь вы сможете писать свои собственные действия в CopperCube. Если вместо этого вы хотите создать поведение, то прочтите следующий урок:  Создание сценария поведения с помощью JavaScript.
Название: Re: CopperCube
Отправлено: Striver от 03 Май 2019, 23:19:59
Цитировать
Из этого урока вы узнаете как использовать поведения и действия для создания простого 3D-конфигуратора в  CopperCube.
Из этого урока вы узнаете, как использовать поведения и действия для создания простого 3D-конфигуратора в CopperCube.

Цитировать
Недавно созданная камера с целью направленной на 3D-модель
Недавно созданная камера с целью, направленной на 3D-модель

Цитировать
Теперь нам нужны кнопки на которые пользователь сможет нажать.
Теперь нам нужны кнопки, на которые пользователь сможет нажать.

Цитировать
Поэтому мы просто создадим 2 билборда (используйте вкладку 'Create' «Создать» и нажмите значок 'Create a Billboard' «Создать билборд», либо через меню 'Edit -> Insert -> Create a Billboard' «Редактировать -> Вставить -> Создать билборд») и разместим их тех в трехмерных позициях, в которые должна перемещаться камера, когда пользователь нажимает на одну из двух кнопок:
Поэтому мы просто создадим 2 билборда (используйте вкладку 'Create' «Создать» и нажмите значок 'Create a Billboard' «Создать билборд», либо через меню 'Edit -> Insert -> Create a Billboard' «Редактировать -> Вставить -> Создать билборд») и разместим их в тех трехмерных позициях, в которые должна перемещаться камера, когда пользователь нажимает на одну из двух кнопок:

Цитировать
Билборды отмечающие 3D-позиции камеры
Билборды, отмечающие 3D-позиции камеры

Цитировать
Новое поведение будет добавлено и выглядеть так:
Добавится новое поведение, и оно будет выглядеть так:

Цитировать
Новое действие будет добавлено и выглядеть так:
Добавится новое действие, и оно будет выглядеть так:

Цитировать
Надеюсь, вы заметили, что добавить поведение и действие к 2D-наложению, действительно легко.
Надеюсь, вы заметили, что добавить поведение и действие к 2D-наложению действительно легко.
Название: Re: CopperCube
Отправлено: Samovar от 04 Май 2019, 00:40:08
Поправил. Благодарю, Striver!
Название: Re: CopperCube
Отправлено: Samovar от 04 Май 2019, 19:43:25
Создание сценария поведения с помощью JavaScript

Вы можете создавать свои собственные поведения в CopperCube, используя JavaScript. И они будут работать так же, как встроенные. В этом уроке рассказано, как это сделать.

Если вы еще не прочли урок о том, как создать сценарий действия с помощью JavaScript, то сделайте это сейчас. Данный урок основан на нём.

Давайте начнём
Как и в уроке по созданию действия, создайте новый файл в каталоге расширений (Documents\CopperCube\extensions в Windows или ~/Documents/CopperCube/extensions в Mac OS X) и назовите его "behavior_moveBetweenPoints.js". Откройте его в текстовом редакторе и наполните следующим текстом:
Код
/*
  <behavior jsname="behavior_moveBetweenPoints"
   description="Move scene node between 2 points">
      <property name="EndPoint" type="vect3d" default="100.0, 100.0, 100.0" />
      <property name="Speed" type="float" default="0.02" />
  </behavior>
*/

behavior_moveBetweenPoints = function()
{
   this.LastTime = null;
   this.StartPoint = null;
};

// вызывается каждый кадр.
//   'node' - это узел сцены, к которому привязано это поведение.
//   'timeMs' - текущее время сцены в миллисекундах.
// Возвращает'true' (истина), если что-то изменилось, и 'false' (ложь), если нет.
behavior_moveBetweenPoints.prototype.onAnimate = function(node, timeMs)
{
   // получаем время последнего кадра
 
  if (this.LastTime == null)
  {
    // мы раньше не вызывали функцию, поэтому сохраним время и отменим
    this.LastTime = timeMs;
    this.StartPoint = ccbGetSceneNodeProperty(node, 'Position');
    return false;
  }
 
  var delta = timeMs - this.LastTime;
  this.LastTime = timeMs;
  if (delta > 200) delta = 200; // не позволяем перемещений дольше 200 миллисекунд
 
  // перемещение
 
  var pos = ccbGetSceneNodeProperty(node, 'Position');
     
  var movementVector = this.EndPoint.substract(this.StartPoint);
 
  if (pos.substract(this.StartPoint).getLength() > movementVector.getLength())
  {
    // достигнута конечная точка, переключаем направление и перезапускаем
     
    var tmp = this.StartPoint;
    this.StartPoint = this.EndPoint;
    this.EndPoint = tmp;
     
    movementVector = this.EndPoint.substract(this.StartPoint);
  }   
 
  // перемещение
     
  movementVector.normalize();
 
  pos.x += movementVector.x * delta * this.Speed;
  pos.y += movementVector.y * delta * this.Speed;
  pos.z += movementVector.z * delta * this.Speed;
         
  // устанавливаем новую позицию
 
  ccbSetSceneNodeProperty(node, 'Position', pos);
 
  return true;
}

Если вы запустите CopperCube, то станет доступно новое поведение под названием "Move scene node between 2 points" («Перемещать узел сцены между 2 точками»). Теперь в сцене CopperCube по умолчанию нажмите на 3D-куб  'cubeMesh1', выберите вкладку 'Behavior' «Поведения». Нажмите «+», чтобы добавить новое поведение, и выберите новое поведение, которое вы найдёте в разделе  "Scripted Behaviors" «Сценарные поведения».

(https://www.ambiera.com/coppercube/doc/images/scripted_behavior_movescene.png)

Если теперь вы запустите приложение, например, как Windows .exe или Mac OS X .app, то поведение будет запущено, и куб, к которому привязано поведение, начнёт непрерывно перемещаться между его текущей позицией и той, которая указана в параметре 'EndPoint' со скоростью 'Speed' «Скорость». Ваше первое собственное поведение заработало!

Как это устроено
XML в заголовке сценария поведения работает так же, как и для действий, и описано в уроке о том, как создать сценарий действия. Доступны и все типы параметров, такие как 'string' «строка», 'color' «цвет», 'texture' «текстура» и т. д. Здесь все правила одинаковы: нам нужно указать имя класса (в данном случае "behavior_moveBetweenPoints") и создать для него конструктор, как показано ниже. Единственная разница с действиями: имя класса JavaScript и имя файла, должны начинаться с 'behavior_', а не с 'action_'.
Код
behavior_moveBetweenPoints = function()
{
   this.LastTime = null;
   this.StartPoint = null;
};

В конструкторе мы инициализируем две переменные, которые нам понадобятся позже: вторая - это значение времени, когда поведение было запущено, чтобы мы могли плавно перемещать куб, независимо от текущей частоты кадров, и первая - это точка узла сцены, к которому привязано данное поведение, в данном случае куб.
Следующая функция выполняется каждый кадр и делает фактическую работу перемещения куба между двумя точками:
Код
behavior_moveBetweenPoints.prototype.onAnimate = function(node, timeMs)
{
    ...
}

Функция должна иметь имя 'onAnimate' и принимать два параметра:
Код внутри этой функции просто перемещает узел, используя ccbGetSceneNodeProperty() и ccbSetSceneNodeProperty() для чтения и задания 3D-положения узла между двумя точками. Каждый раз, когда CopperCube вызывает функцию onAnimate(), узел немного перемещается в направлении свойства EndPoint (Конечная точка), и, если EndPoint (Конечная точка) достигнута, направление движения меняется на противоположное.

Добавление событий клавиатуры
Пока все хорошо, но что, если мы захотим добавить события клавиатуры в наше поведение? На самом деле, это не так сложно. Нам нужно только добавить функцию для обработки событий клавиатуры в наше поведение. Для этого добавьте следующий код в конец файла  behavior_moveBetweenPoints.js :
Код
// параметры: клавиша: код клавиши которая нажата или отпущена  
// нажатие: true (истина) если клавиша нажата, false (ложь) если отпущена
behavior_moveBetweenPoints.prototype.onKeyEvent = function(key, pressed)
{
  if (key == 32) // клавиша 'Пробел'
  {
     if (pressed)
        this.Speed = 0.02;
     else
        this.Speed = 0.0;
  }
}
Если клавиша нажата или отпущена, то вызывается эта функция. Для этого примера мы устанавливаем свойство 'this.Speed' в 0, если пробел освобождается, и в значение по умолчанию (0.02) после его нажатия. Это заставляет куб двигаться только при нажатии клавиши пробел. Легко. :)
Коды являются стандартными кодами клавиш в Windows. Наиболее популярные из них: 37 - для клавиши влево, 38 - вверх, 39 - вправо, 40 - вниз и 32 для пробела.

Добавление событий мыши
Получение событий мыши очень похоже на получение событий клавиатуры. Если вам этого не достаточно, то вы можете запросить текущие координаты мыши с помощью функций ccbGetMousePosX() и ccbGetMousePosY(). Для получения событий кнопок мыши добавьте эту функцию:
Код
// mouseEvent (событие мыши): 0=мышь движется, 1=движется колёсико мыши, 2=левая кнопка мыши отпущена,
//     3=левая кнопка мыши нажата, 4=правая кнопка мыши отпущена, 5=правая кнопка мыши нажата
behavior_moveBetweenPoints.prototype.onMouseEvent
           = function(mouseEvent, mouseWheelDelta)
{
  // здесь обработка событий мыши
}
Название: Re: CopperCube
Отправлено: Samovar от 04 Май 2019, 22:34:42
Урок: Создание 3D-геометрии с помощью JavaScript

Вы можете создавать новую геометрию с нуля, используя сценарии (скрипты) на JavaScript в CopperCube. Скрипты работают не только в редакторе, но и в приложении Windows .exe и Mac OS X .app во время их выполнения и могут быть очень полезны. На самом деле, всё очень просто, и этот короткий урок о том, как это делать:

(https://www.ambiera.com/coppercube/doc/images/geometrytut.jpg)
Созданная геометрия


Работает это просто. Для каждой геометрии в CopperCube у вас имеется два буфера: один, в котором хранятся вершины с их позицией, цветом и т. д., и второй буфер, в котором хранятся индексы этих этих вершин. Например, если у вас есть 4 вершины:
  0-----1
  |       |
  |       |
  2-----3

Затем, для создания прямоугольника, вам нужно сделать его из двух треугольников:
  0-----1
  |    /  |
  | /     |
  2-----3

Для этого, в индексном буфере вам нужно будет сохранить два треугольника, 0-1-2 и 1-3-2. Таким образом, индексный буфер будет выглядеть так:
(0,1,2,1,3,2)

Для добавления вершины в буфер вершин есть функция ccbAddMeshBufferVertex(), а для добавления индекса используйте функцию ccbAddMeshBufferIndex().

В коде примера, мы позволяем пользователю выбрать 3D-объект в редакторе и заменить всю его геометрию прямоугольником:

Код
// используем текущий выбранный в редакторе узел 
 
var meshnode = editorGetSelectedSceneNode();
var bufferCount = ccbGetSceneNodeMeshBufferCount(meshnode);


if (bufferCount == 0)
  alert('The selected node has no 3D geometry.');
else
{
   // получаем старую текстуру этого узла
   var oldTexture = ccbGetSceneNodeMaterialProperty(meshnode, 0, "Texture1");
   
   // удаляем все буферы меша, содержащие геометрию, потому что мы хотим заменить ее совершенно новой геометрией
   for (var i=0; i<bufferCount; ++i)
      ccbRemoveMeshBuffer(meshnode, 0);
     
   // добавляем новый буфер
   ccbAddMeshBuffer(meshnode);
   
   // отключаем динамическое освещение и устанавливаем текстуру
   ccbSetSceneNodeMaterialProperty(meshnode, 0, 'Lighting', false);
   ccbSetSceneNodeMaterialProperty(meshnode, 0, "Texture1", oldTexture);
   
   // добавляем 4 вершины
   ccbAddMeshBufferVertex(meshnode, 0, new vector3d(0,10,0));
   ccbAddMeshBufferVertex(meshnode, 0, new vector3d(10,10,0));
   ccbAddMeshBufferVertex(meshnode, 0, new vector3d(0,0,0));
   ccbAddMeshBufferVertex(meshnode, 0, new vector3d(10,0,0));
   
   // назначаем цвета вершинам
   ccbSetMeshBufferVertexColor(meshnode, 0, 0, 0x77400000);
   ccbSetMeshBufferVertexColor(meshnode, 0, 1, 0x77400000);
   ccbSetMeshBufferVertexColor(meshnode, 0, 2, 0x77400000);
   ccbSetMeshBufferVertexColor(meshnode, 0, 3, 0x77400000);
   
   // устанавливаем текстурные координаты
   ccbSetMeshBufferVertexTextureCoord(meshnode, 0, 0, new vector3d(0,1,0));
   ccbSetMeshBufferVertexTextureCoord(meshnode, 0, 1, new vector3d(1,1,0));
   ccbSetMeshBufferVertexTextureCoord(meshnode, 0, 2, new vector3d(0,0,0));
   ccbSetMeshBufferVertexTextureCoord(meshnode, 0, 3, new vector3d(1,0,0));
   
   // Добавляем 6 индексов, чтобы создать из них 2 треугольника.
   // Обратите внимание, что порядок вершин по часовой стрелке важен.
   // Если вы добавляете индексы 0,1,2, то вы создаете треугольник обращенный к вам лицевой стороной,
   // если вы добавите 0,2,1, то он будет смотреть в противоположном направлении.
   
   ccbAddMeshBufferIndex(meshnode, 0, 0);
   ccbAddMeshBufferIndex(meshnode, 0, 1);
   ccbAddMeshBufferIndex(meshnode, 0, 2);
   ccbAddMeshBufferIndex(meshnode, 0, 1);
   ccbAddMeshBufferIndex(meshnode, 0, 3);
   ccbAddMeshBufferIndex(meshnode, 0, 2);   
   
   // обновляем габаритный прямоугольник узла
   ccbUpdateSceneNodeBoundingBox(meshnode);
}

Откройте окно редактирования сценариев (скриптов) (View -> Show Scripting Window), очистите весь текст в нем, вставьте туда этот текст и нажмите 'execute' «выполнить». Не забудьте до этого выделить 3D-объект.
Название: Re: CopperCube
Отправлено: Striver от 04 Май 2019, 23:11:06
Блин, как же я не люблю яваскрипт...

Цитировать
Самым простым дополнением CopperCube, является программирование сценария действия.
Проще всего создать расширение для CopperCube - запрограммировать сценарий действия.

Цитировать
Если вы перезапустите CopperCube, то будет доступно новое действие с именем «Move Position».
Если вы перезапустите CopperCube, то новое действие с именем «Move Position» станет доступным.

Цитировать
Поскольку мы изменили код JavaScript, чтобы использовать свойство 'MoveWhat' «Что двигать» для изменения положения узла сцены, теперь вам нужно выбрать узел сцены в свойстве  'MoveWhat', на который следует повлиять.
Поскольку мы изменили код JavaScript так, чтобы в нём использовалось свойство 'MoveWhat' «Что двигать» для изменения положения узла сцены, теперь вам нужно в редакторе в свойстве 'MoveWhat' выбрать узел сцены, на который следует повлиять.
Название: Re: CopperCube
Отправлено: Striver от 04 Май 2019, 23:14:25
А можно маленькое разъясненьице для особо тупых, вроде меня. Я вроде всё читал и даже немного правил, но вот как-то мимо меня пролетело...

Вопрос такой:
Что такое "Действие", и что такое "Поведение", и чем они отличаются?
Название: Re: CopperCube
Отправлено: Samovar от 04 Май 2019, 23:30:08
Цитировать
Что такое "Действие", и что такое "Поведение", и чем они отличаются?
Я пока ещё не дошел до перевода этого, да и толком об этом в справке нет... Вот чего пишут и как я понял:

Поведение (Нечто вроде события, но уже включающее некоторые действия и дающее доступ к  подключению других действий):
Цитировать
CopperCube включает в себя несколько поведений и действий, которые могут быть добавлены к любому трехмерному и двумерному объекту в сцене. Благодаря этому, возможно не только анимировать трехмерные объекты, но и добавить интерактивность вашему трехмерному приложению: реагирование на нажатия клавиш и кнопок, воспроизведение звуков или даже создание игровых персонажей, контролируемых искусственным ителлектом (AI).

Действие (Реакция на события в поведении или другие действия):
Цитировать
CopperCube включает в себя несколько действий, которые могут быть вызваны поведением и другими действиями. С их помощью можно не только анимировать трехмерные объекты, но и добавить интерактивность вашему трехмерному приложению: реагирование на нажатия клавиш и кнопок, воспроизведение звуков или даже создание игровых персонажей, контролируемых ИИ.

То есть действия могут быть запущены только поведениями или другими действиями... действий без подведения не может быть.
Для любого объекта должны быть вначале созданы поведения, которые будут производить какие-либо действия... расширять функционал можно как за счёт написания собственных действий, которые будут доступны из любого встроенного поведения и действия, так и за счёт написания собственных проведений (типа опроса клавиатуры и мыши, как в уроке). Походу, действия - это более простые расширения CopperCube, чем более комплексные поведения.
Название: Re: CopperCube
Отправлено: Striver от 05 Май 2019, 00:07:48
Цитировать
Походу, действия - это более простые расширения CopperCube, чем более комплексные поведения.
Ну, ладно, пока будем так считать.
Название: Re: CopperCube
Отправлено: Striver от 05 Май 2019, 00:10:04
Цитировать
В конструкторе мы инициализируем две переменные, которые нам понадобятся позже: вторая - это значение времени, когда поведение было запущено, чтобы мы могли плавно перемещать куб, независимо от текущей частоты кадров, и первая - это точка узла сцены, к которому привязано данное поведение, в данном случае куб.
В конструкторе мы инициализируем две переменные, которые нам понадобятся позже: this.LastTime - значение времени последнего раза, когда это поведение было выполнено, чтобы мы могли плавно перемещать куб независимо от текущей частоты кадров, и this.StartPoint - начальное положение узла сцены, к которому привязано данное поведение, в данном случае куба.

Цитировать
Мы используем это, чтобы иметь возможность плавно перемещать куб: каждый раз мы сохраняем текущее время в которое вызвали функцию, чтобы рассчитать разницу во времени между этим и последним вызовом, и соответствующим образом переместить узел сцены.
Мы используем его, чтобы иметь возможность плавно перемещать куб: каждый раз мы сохраняем текущее время, в которое функция была вызвана, чтобы рассчитать разницу во времени между этим и прошлым вызовом, и соответствующим образом переместить узел сцены.
Название: Re: CopperCube
Отправлено: Samovar от 05 Май 2019, 17:38:37
Цитировать
В конструкторе мы инициализируем две переменные, которые нам понадобятся позже: вторая - это значение времени, когда поведение было запущено, чтобы мы могли плавно перемещать куб, независимо от текущей частоты кадров, и первая - это точка узла сцены, к которому привязано данное поведение, в данном случае куб.
В конструкторе мы инициализируем две переменные, которые нам понадобятся позже: this.LastTime - значение времени последнего раза, когда это поведение было выполнено, чтобы мы могли плавно перемещать куб независимо от текущей частоты кадров, и this.StartPoint - начальное положение узла сцены, к которому привязано данное поведение, в данном случае куба.
Да, грубейшая ошибка из-за моей невнимательности и незнания JavaScript. Поправил. Спасибо!
Название: Re: CopperCube
Отправлено: Samovar от 05 Май 2019, 19:09:11
Цитировать
Походу, действия - это более простые расширения CopperCube, чем более комплексные поведения.
Ну, ладно, пока будем так считать.
Хрен его знает. Вот, в другом 2D-конструкторе Stencil, тоже применяют понятие "поведение": http://www.stencyl.com/help/view/introduction-to-behaviors/
Цитировать
Поведения - это настраиваемые «способности», которые вы прикрепляете к типам актеров или сценам. Вместе они составляют «мозги» игры, обрабатывая все взаимодействия, происходящие в игровом мире.
Название: Re: CopperCube
Отправлено: Samovar от 06 Май 2019, 13:26:08
Упаковка текстур

CopperCube имеет встроенный упаковщик текстур.
Это полезно, если вы используете 3D-модели (например, загруженные из Интернета), которые не были оптимизированы для игр. В большинстве 3D-моделей, доступных онлайн, наложено множество текстур, что существенно замедлит вашу игру при её рендеринге. Теперь вы можете просто кликнуть правой кнопкой мыши по такой модели и выбрать "Modify -> Pack all textures of selection into one" «Изменить -> Упаковать все текстуры выделения в одну». Это оптимизирует текстуры вашей 3D-модели и сделает ее рендеринг намного быстрее.

(https://www.ambiera.com/coppercube/doc/images/texturepacker1.jpg)

Если 3D-модель имеет 15 текстур, то для её рендеринга потребуется 15 вызовов функции рисования. Это очень медленно. В идеале 3D-модель должна быть нарисована всего одним вызовом.
Поэтому кликните правой кнопкой мыши на 3D-модели и выберите 'Modify Selection' -> 'Pack all textures of selection into one' «Изменить выделение» -> «Упаковать все текстуры выделения в одну».

(https://www.ambiera.com/coppercube/doc/images/texturepacker2.jpg)

Когда вы запустите упаковщик текстур, он спросит про размер текстуры, которую вы хотите использовать как конечное изображение. Лучше использовать размер степени двойки, например 1024 или 2048. Остальное делается автоматически.

(https://www.ambiera.com/coppercube/doc/images/texturepacker3.jpg)

Для веб-платформ, таких как WebGL, это всегда наилучшее решение, поскольку это также уменьшает и количество загрузок, поэтому ваше приложение будет запускаться быстрее.
Название: Re: CopperCube
Отправлено: Samovar от 06 Май 2019, 13:47:29
Перемещение с помощью JavaScript

В этом примере показано, как переместить трехмерный объект сцены в CopperСube с помощью JavaScript. Это можно использовать только в том случае, если целевой платформой является Windows (.exe) или MacOS (.app). Если вам нужна платформа WebGL, то смотрите здесь.

Вначале, сделайте следующее:
(https://www.ambiera.com/coppercube/doc/images/tut_movement.jpg)
Сцена для этого примера.


Напишите следующий код в вашем файле .js
Код
// регистрируем события клавиатуры
ccbRegisterKeyDownEvent("keyPressedDown");

function keyPressedDown(keyCode)
{
   if (keyCode == 88)
   {
      // пользователь нажимает клавишу 'X', и тем самым, немного перемещает узел 'cubeMesh1'
      var cube = ccbGetSceneNodeFromName("cubeMesh1");   
      var pos3d = ccbGetSceneNodeProperty(cube, "Position");
     
      pos3d.y += 2;
     
      ccbSetSceneNodeProperty(cube, "Position", pos3d);
   }
}
Когда вы снова запустите приложение ('Tools -> Test As Windows Application (.exe)' «Инструменты -> Тестировать приложение Windows (.exe)»), куб будет немного перемещаться вверх каждый раз, при нажатии на клавишу 'X'.

Этот пример работает с помощью доступа к API JavaScript. Благодаря API вы можете манипулировать всеми аспектами трехмерной сцены: текстурами, материалами, позициями, объектами и т. д. Для получения полной справки обо всех функциях смотрите Справочник по JavaScript.
Название: Re: CopperCube
Отправлено: Samovar от 06 Май 2019, 13:59:57
Столкновение с помощью JavaScript

В этом примере показано, как проверить столкновение между курсором мыши и 3D-объектом в сцене  CopperСube с помощью JavaScript. Это можно использовать только в том случае, если целевой платформой является Windows (.exe) или MacOS (.app). Если вам нужна платформа WebGL, то смотрите здесь.

Вначале, сделайте следующее:
(https://www.ambiera.com/coppercube/doc/images/tut_collision.jpg)
Сцена для этого примера.
Используйте следующий код:
Код
// регистрируем событие рисования
ccbRegisterOnFrameEvent("onFrameDrawing");

function onFrameDrawing()
{
   var mouseX = ccbGetMousePosX();
   var mouseY = ccbGetMousePosY();
   
   // test collision

   var cube1 = ccbGetSceneNodeFromName("cubeMesh1");   
   var cube2 = ccbGetSceneNodeFromName("cubeMesh2");   
   
   var endPoint3d = ccbGet3DPosFrom2DPos(mouseX, mouseY);
   var startPos3D = ccbGetSceneNodeProperty(ccbGetActiveCamera(), "Position");
   
   var cube1Hovered = ccbDoesLineCollideWithBoundingBoxOfSceneNode(cube1, startPos3D.x, startPos3D.y, startPos3D.z, endPoint3d.x, endPoint3d.y, endPoint3d.z);
                                     
   var cube2Hovered = ccbDoesLineCollideWithBoundingBoxOfSceneNode(cube2, startPos3D.x, startPos3D.y, startPos3D.z, endPoint3d.x, endPoint3d.y, endPoint3d.z);
   
   ccbSetSceneNodeMaterialProperty(cube1, 0, "Wireframe", cube1Hovered);
   ccbSetSceneNodeMaterialProperty(cube2, 0, "Wireframe", cube2Hovered);
}
Теперь, когда вы снова запустите приложение ('Tools -> Test As Windows Application (.exe)' «Инструменты -> Тестировать как приложение Windows (.exe)»), включится режим каркасного отображения куба, на котором находится указатель мыши. Результат должен выглядеть так:

(https://www.ambiera.com/coppercube/doc/images/tut_collision_c.jpg)
3D-объект, над которым находится указатель мыши, будет нарисован в режиме каркаса.

Этот пример работает с помощью доступа к API JavaScript. Благодаря API  вы можете манипулировать всеми аспектами трехмерной сцены: текстурами, материалами, позициями, объектами и т. д.  Для получения полной справки обо всех функциях смотрите Справочник по JavaScript.
Название: Re: CopperCube
Отправлено: Striver от 07 Май 2019, 13:53:39
Цитировать
Опубликуйте его как файл Windows (.exe) (или Mac OS X (.app)), используя 'Tools -> Test as Windows Application' или  'File -> Publish -> Publish as Windows Application', «Инструменты -> Тестировать как приложение Windows» или «Файл -> Опубликовать -> Опубликовать как приложение Windows».
Опубликуйте её как файл Windows (.exe) (или Mac OS X (.app)), используя 'Tools -> Test as Windows Application' или  'File -> Publish -> Publish as Windows Application', «Инструменты -> Тестировать как приложение Windows» или «Файл -> Опубликовать -> Опубликовать как приложение Windows».
(Относится сразу к двум последним статьям)

Цитировать
Теперь создайте пустой текстовый файл, в том месте где вы сохранили файл test.ccb, и назовите его 'test.js'.
Теперь создайте пустой текстовый файл в том месте, где вы сохранили файл test.ccb, и назовите его 'test.js'.

Цитировать
Когда вы снова запустите приложение ('Tools -> Test As Windows Application (.exe)' «Инструменты -> Тестировать приложение Windows (.exe)»), куб будет немного перемещаться вверх каждый раз, при нажатии на клавишу 'X'.
Когда вы снова запустите приложение ('Tools -> Test As Windows Application (.exe)' «Инструменты -> Тестировать приложение Windows (.exe)»), куб будет немного перемещаться вверх каждый раз при нажатии на клавишу 'X'.
Название: Re: CopperCube
Отправлено: Samovar от 07 Май 2019, 18:51:32
Благодарю, Striver. Поправил. Ехаем дальше...
Название: Re: CopperCube
Отправлено: Samovar от 08 Май 2019, 18:53:41
Местность и деревья

CopperCube  поддерживает рендеринг местности, и обладает редактором для создания её ландшафта, растений, травы и многого другого.

(https://www.ambiera.com/coppercube/doc/images/terrain.jpg)


Как редактировать ландшафт местности
После того, как вы создали базовую местность, либо с помощью команды  "Edit -> Insert Terrain" «Правка -> Вставить местность», либо кликнув значок местности, у вас есть возможность редактировать её с помощью нескольких команд:

(https://www.ambiera.com/coppercube/doc/images/terrain2.jpg)
Распределение  полигональных сеток (мешей) по местности
В CopperCube есть команда для распределения полигональных сеток (мешей) по местности, таких как деревья или камни.  Для этого вы можете использовать генератор дерева или любую статическую или анимированную полигональную модель. Вначале сделайте следующее:

Импортируйте свою статическую или анимированную полигональную 3D-модель, используя,  "File -> Import -> Static 3D Mesh from File" или "File -> Import -> Animated 3D Mesh", «Файл -> Импорт -> Статическая 3D-модель из файла» или «Файл -> Импорт -> Анимированная 3D-модель». Обратите внимание, что вы можете распределять только анимированные полигональные модели по рельефу местности из соображений производительности и памяти (такие данные распределяются и сортируются более эффективно), поэтому, если вы используете статическую полигональную сетку, вам необходимо преобразовать ее в анимированную. Для этого кликните правой кнопкой мыши в 3D-виде выберите "Modify Selection -> Clone as static animated mesh" «Изменить выделение -> Клонировать как статическую анимированную полигональную сетку». Модель будет клонирована в статическую анимированную полигональную сетку и показана в редакторе анимации. Там кликните правой кнопкой мыши на 3D-виде и выберите 'Create instance' «Создать экземпляр». Теперь у вас есть необходимая статическая анимированная полигональная сетка в 3D-виде сцены, и вы можете кликнуть по ней правой кнопкой мыши и выбрать "Modify Selection -> Distribute over terrain" «Изменить выделение -> Распределить по местности».

Данный метод использования анимированных полигональных сеток также имеет еще одно преимущество: если у вас есть неанимированная полигональная сетка, то в редакторе анимированных полигональных сеток вы можете кликнуть правой кнопкой мыши на 3D-виде и использовать команду "Set Static Collision Box" «Установить габаритный контейнер для статических столкновений». Там можно указать относительные координаты и размеры габаритного контейнера для обнаружения столкновений (x,y,z,размер по x, размер по y, размер по z), которые, например, будут немного меньше фактических размеров полигональной сетки (меша). Это полезно, например, для деревьев: пусть габаритный контейнер столкновений вмещает только ствол дерева, чтобы было возможным намного легче перемещаться по местности.


Добавление собственных полигональных сеток (мешей) на местность
Если вы хотите добавить свои собственные меши на ландшафт местности, например, дома или аналогичные объекты, и эффективно их сортировать, чтобы ускорить запуск вашей игры или приложения, то можете сделать это легко:
В окне менеджера сцены просто перетащите необходимый меш на узел местности. Полигональная сетка будет автоматически прикреплена к ландшафту местности, благодаря чему ваше приложение будет рендериться намного быстрее.
Но есть недостаток: если вы добавляете узел в качестве дочернего элемента местности, то он больше не должен перемещаться, когда ваше приложение или игра запущены. Так что используйте это только для неподвижных объектов.


Генерация деревьев
CopperCube включает в себя возможность создавать процедурно сгенерированные деревья на основе заданных пользователем параметров. Эта функция является бета-версией и пока не очень удобна для пользователя, но планируется её усовершенствование в будущих версиях. Используйте команду "Edit -> Insert -> Create a tree" «Правка -> Вставить -> Создать дерево», чтобы открыть диалоговое окно создания дерева. Там вы можете указать множество параметров для генерации дерева.

(https://www.ambiera.com/coppercube/doc/images/tree_gen.jpg)


Обратите внимание, что вы можете выбрать 'generate as animated mesh'  «создать как анимированную полигональную сетку», чтобы дерево было легко использовать для команды "Distribute over terrain"  «Распределение по местности».


Ветер
По умолчанию трава и листья деревьев колышутся ветром. Вы можете настроить параметры ветра, выбрав корневой узел в менеджере сцены, и изменив значения под флажком  'Wind' «Ветер» в окне свойств. Дополнительно вы можете включить/отключить колыхание травы в окне свойств узла местности.

Данная функция работает и для других объектов. У них необходимо настроить тип материала: если у вас есть материал типа "Transparent (alpha channel)"«Прозрачный (альфа-канал)», то вы можете выбрать в конце списка типов материалов  "Advanced Settings..."  «Расширенные настройки ...» и установить флажок "Moved by Wind" «Колышется ветром».

Функция работает на платформах: WebGL, Android и Windows / D3D. На платформах не поддерживающих колыхание ветром, система автоматически возвращается к статической растительности. Это не влияет на производительность, поскольку колыхания ветром рассчитываются на GPU.


Текстуры для местности
Для создания текстур, которые будут использоваться на местности в CopperCube, мы рекомендуем программное обеспечение Genetica.  Это очень гибкий инструмент, и некоторые текстуры, включенные в сцену примера местности в CopperCube, основаны на текстурах созданных с помощью Genetica.


Импорт карт высот
Вы можете импортировать карты высот в CopperCube из других программ. Просто используйте команду "File -> Import -> Terrain Heightmap" «Файл -> Импорт -> Карта высот местности». Coppercube может импортировать карты высот в  форматах: .raw, .r16, .r32, .png, .tga и .pgm.Также имеется возможность автоматически применять текстуры к импортированной местности и распределять траву по ней.

Нормальный размер импортируемой карты высот - 128x128 пикселей. Если вы используете большее разрешение карты высот, то получите более огромный мир.
Название: Re: CopperCube
Отправлено: Samovar от 08 Май 2019, 23:01:16
Рендеринг тумана

CopperCube поддерживает рендеринг тумана (для воздушной перспективы), который выглядит особенно привлекательно в сочетании с рендерингом местности:

(https://www.ambiera.com/coppercube/doc/images/fog_terrain.jpg)


Чтобы включить рендеринг в тумана, просто установите флажок в окне свойств корневого узла сцены:

(https://www.ambiera.com/coppercube/doc/images/fogsetting.png)


Вы можете придать туману (Fog) любой цвет (FogColor). Настройка плотности (FogDensity) влияет на то, как далеко начинается туман, и как далеко вы можете видеть сквозь него. CopperCube использует экспоненциальный туман по формуле fog = exp2 (- FogDensity * zDepth * 1.442695); // где 1.442695 = 1 / log(2), FogDensity - плотность тумана, zDepth- глубина.


Технические ограничения
Существует несколько технических ограничений для рендеринга тумана:
Название: Re: CopperCube
Отправлено: Samovar от 11 Май 2019, 14:15:32
Рендеринг динамических теней

CopperCube поддерживает  рендеринг динамических теней в реальном времени, также известных, как теневые карты или карты теней. Динамические тени выглядят особенно привлекательно в сочетании с рендерингом местности:

(https://www.ambiera.com/coppercube/doc/images/terrain_shadows.jpg)


Чтобы включить отображение динамических теней, выберете корневой узел в вашей сцене, и в окне свойств, установите флажок "Realtime Shadows" «Динамические тени»:

(https://www.ambiera.com/coppercube/doc/images/shadowssetting.png)


После этого станут видимы другие настройки для теней, которые описаны ниже. Вам потребуется немного их настроить, чтобы тени в вашей сцене выглядели более привлекательно. Для простого теста динамических теней вы можете использовать пустую сцену и вставить в нее ландшафт: нажмите "Edit -> Insert Terrain -> OK" «Правка -> Вставить ландшафт -> ОК».


Основы рендеринга динамических теней
CopperCube поддерживает рендеринг динамических теней только от одного направленного источника света. Это хорошо работает для экстерьерных сцен, где источником света является солнце. Конечно, вы можете использовать и точечные источники света, и они будут хорошо освещать объекты, но объекты не будут отбрасывать теней. Также, теней не будет, если в сцене нет источника направленного света.

(https://www.ambiera.com/coppercube/doc/images/terrain_shadows2.jpg)
Красный точечный источник света в сцене совместно с динамическими тенями.
Точечный источник света не создаёт теней, но все еще освещает сцену.


Динамические тени на объектах будут отображаться только тогда, когда на вкладке их материала установилен тип освещения "Dynamic" «Динамический» . По умолчанию, для большинства объектов, установлен тип освещения "None" «Без освещения», поэтому вам нужно изменить его на «Динамический». На изображении ниже вы можете видеть три куба. На том кубе, который находится в левом нижнем углу, установлен режим освещения "None" «Без освещения», поэтому он не будет освещен и не будет отображать динамические тени:

(https://www.ambiera.com/coppercube/doc/images/terrain_shadows5.jpg)
Различные типы освещения.


Если хотите, то вы можете сделать пропускающим свет любой полигональный объект. Для этого снимите флажок "OccludesLight" «Загораживать свет» в окне его свойств.


Настройки динамических теней
Если включен режим  "Realtime shadows" «Динамические тени», то вся сцена будет отображаться с динамическими тенями . Для этого система использует две каскадные карты теней: одну для ближних объектов, чтобы вы могли получить там более детальные тени, а другую для более удаленных от камеры объектов,  с менее подробными деталями. Вы можете настроить параметр того, насколько большой будет область для детальных теней. Чем меньше площадь этой области, тем детальнее будут тени находящиеся рядом с камерой. Значение свойства Shadow Detail Factor" «Фактор детализации теней» указывает, какая часть сцены будет прорисована подробно (например, 0.2 означает 20% мира).

(https://www.ambiera.com/coppercube/doc/images/terrain_shadows3.jpg)
Различные факторы детализации теней.


Прозрачность теней можно регулировать с помощью значения  "Shadow Opacity" «Непрозрачность теней»:

(https://www.ambiera.com/coppercube/doc/images/terrain_shadows4.jpg)
Различные факторы непрозрачности теней.


Кроме того, есть три других доступных значения, которые можно использовать для настройки того, как тени визуализируются в сцене. В зависимости от типов объектов и размера вашей сцены вы можете настроить их так, чтобы тени выглядели более реалистично:
(https://www.ambiera.com/coppercube/doc/images/terrain_shadows6.jpg)
Различные значения для смещения собственной тени.


Включение и отключение теней во время выполнения
Для рендеринга динамических теней в реальном времени требуется быстрое оборудование, поэтому вы можете программно отключать и включать тени, в зависимости от предпочтения пользователей. Так, например, пользователи вашей игры смогут отключать тени, если они запускают её на более медленном оборудовании. Вы можете сделать это с помощью нескольких строк JavaScript:
Код
var root = ccbGetRootSceneNode();
var shadowAreEnabled = ccbGetSceneNodeProperty(root, "Realtime Shadows");
ccbSetSceneNodeProperty(root, "Realtime Shadows", !shadowAreEnabled);
Это включит тени, если они отключены, и отключит, если они включены.


Смешивание статичного освещения и динамических теней
Поскольку CopperCube также поддерживает статичное освещение (карта освещения), то можно использовать оба метода освещения в одной и той же сцене:

(https://www.ambiera.com/coppercube/doc/images/terrain_shadows7.jpg)
Динамические тени и карта освещения  в одной сцене.


Вам нужно только указать тип освещения "Lightmapping" «Статичный (карта освещения)» в  материале для объектов, которые должны быть статично освещены, и "Dynamic" «Динамический» для объектов, которые должны быть освещены с использованием динамических теней. Обратите внимание, что в настоящее время невозможно отображать динамические тени на объектах, на которых есть карты освещения, и наоборот.


Технические ограничения
Есть несколько технических ограничений для рендеринга динамических теней:
Динамические тени в настоящее время работают только на этих платформах:

P.S. Возможно стоит использовать "Динамичные тени" вместо "Динамические тени". Как думаешь, Striver?
Название: Re: CopperCube
Отправлено: Samovar от 11 Май 2019, 16:25:23
Цитировать
После этого станут видимы другие настройки для теней, которые описаны ниже. Вам потребуется немного их настроить, чтобы тени в вашей сцене выглядели более привлекательно. Для простого теста динамических теней вы можете использовать пустую сцену и вставить в нее ландшафт: нажмите "Edit -> Insert Terrain -> OK" «Правка -> Вставить ландшафт -> ОК».
Заменено на:
После этого станут видимы другие настройки для теней, которые описаны ниже. Вам потребуется немного их настроить, чтобы тени в вашей сцене выглядели более привлекательно. Для простого теста динамических теней вы можете использовать пустую сцену и добавить в нее местность: нажмите "Edit -> Insert Terrain -> OK" «Правка -> Добавить местность -> ОК».

P.S. Из всего выше переведённого можно сделать вывод о том, какие объекты могут присутствовать в сцене только в одном единственном экземпляре:
Название: Re: CopperCube
Отправлено: Samovar от 12 Май 2019, 09:05:44
3D-звуки

CopperCube поддерживает воспроизведение 3D и 2D звуков, что позволяет проигрывать объёмную и фоновую музыку. В зависимости от целевой платформы Coppercube поддерживает следующие форматы звуковых файлов:
Примечание: При использовании целевой платформы Flash (.swf) (старые версии 5.х) CopperCube поддерживает воспроизведение только файлов .mp3. При использовании  целевой платформы Windows (.exe) проигрыватель поддерживает все форматы файлов, кроме файлов .mp3. Доступны бесплатные инструменты, такие как Audacity, которые могут конвертировать файлы этих форматов (например, из .mp3 в .ogg).

Создание 3D-звука
Чтобы создать звук, нажмите меню "Edit" «Правка» (или кликните правой кнопкой мыши на сцене) и выберите "Insert -> Create a 3D sound" «Вставить -> Создать 3D-звук». Созданный звук будет выглядеть так:

(https://www.ambiera.com/coppercube/doc/images/editor_3d_sound.jpg)
3D-звук


Вначале вы ничего не услышите, потому что звук еще не выбран. В окне свойств звука вы можете выбрать звуковой файл, и тогда звук начнёт воспроизводиться:

(https://www.ambiera.com/coppercube/doc/images/dlg_3dsound_attributes.png)
Свойства  3D-звука


Обратите внимание, что вы можете выбрать звуковой файл только поддерживаемого формата, как описано выше. Если вы выбирали не поддерживаемый формат файла и опубликовали свою сцену, то CopperCube напечатает предупреждение.

Доступны следующие атрибуты:
Название: Местность и деревья
Отправлено: Striver от 13 Май 2019, 09:25:10
Местность и деревья

Цитировать
CopperCube  поддерживает рендеринг местности, и обладает редактором для создания её ландшафта, растений, травы и многого другого.
CopperCube поддерживает рендеринг местности и обладает редактором для создания её ландшафта, растений, травы и многого другого.

Цитировать
Flatten tool (Инструмент сплющивания):
Flatten tool (Инструмент выравнивания):

Цитировать
Если вы хотите добавить свои собственные меши на ландшафт местности, например, дома или аналогичные объекты, и эффективно их сортировать, чтобы ускорить запуск вашей игры или приложения, то можете сделать это легко:
как я понимаю, под and have them culled effiently in order здесь имеется ввиду, что эти объекты будут обрабатываться совместно с местностью, со всеми её оптимизациями, так что можно попробовать так перевести:
Если вы хотите добавить свои собственные меши на ландшафт местности, например, дома или аналогичные объекты, для их эффективной обработки и отсечения, чтобы ваша игра или приложение работали быстрее, то можете сделать это легко:

Цитировать
Это очень гибкий инструмент, и некоторые текстуры, включенные в сцену примера местности в CopperCube, основаны на текстурах созданных с помощью Genetica.
Это очень гибкий инструмент, и некоторые текстуры, включенные в сцену примера местности в CopperCube, основаны на текстурах, созданных с помощью Genetica.

Цитировать
Если вы используете большее разрешение карты высот, то получите более огромный мир.
Если вы используете большее разрешение карты высот, то получите слишком огромный мир.
Название: Рендеринг тумана
Отправлено: Striver от 13 Май 2019, 09:31:15
Рендеринг тумана

Цитировать
Чтобы включить рендеринг в тумана, просто установите флажок в окне свойств корневого узла сцены:
Чтобы включить рендеринг в тумане, просто установите флажок в окне свойств корневого узла сцены:

Цитировать
Платформа Flash (старые версии CopperCube 5.x) не поддерживает рендеринг тумана. Всё рендерится без тумана.
Платформа Flash (старые версии CopperCube 5.x) не поддерживает рендеринг тумана. В ней всё будет рендериться без тумана.
Название: Рендеринг динамических теней
Отправлено: Striver от 13 Май 2019, 10:01:14
Рендеринг динамических теней

Цитировать
Чтобы включить отображение динамических теней, выберете корневой узел в вашей сцене, и в окне свойств, установите флажок "Realtime Shadows" «Динамические тени»:
Чтобы включить отображение динамических теней, выберете корневой узел в вашей сцене, и в окне свойств установите флажок "Realtime Shadows" «Динамические тени»:

Цитировать
Вам потребуется немного их настроить, чтобы тени в вашей сцене выглядели более привлекательно.
Вам потребуется их поднастроить, чтобы тени в вашей сцене выглядели более привлекательно.

Цитировать
Динамические тени на объектах будут отображаться только тогда, когда на вкладке их материала установилен тип освещения "Dynamic" «Динамический» .
Динамические тени на объектах будут отображаться только тогда, когда на вкладке их материала установлен тип освещения "Dynamic" «Динамический».

Цитировать
На том кубе, который находится в левом нижнем углу, установлен режим освещения "None" «Без освещения», поэтому он не будет освещен и не будет отображать динамические тени:
На том кубе, который находится в левом нижнем углу, установлен режим освещения "None" «Без освещения», поэтому для него не будет просчитываться освещение, и на нём не будут отображаться динамические тени:

Цитировать
Чем меньше площадь этой области, тем детальнее будут тени находящиеся рядом с камерой.
Чем меньше площадь этой области, тем детальнее будут тени, находящиеся рядом с камерой.

Цитировать
Кроме того, есть три других доступных значения, которые можно использовать для настройки того, как тени визуализируются в сцене.
Кроме того, доступны три других значения, которые можно использовать для настройки визуализации теней в сцене.

Цитировать
P.S. Возможно стоит использовать "Динамичные тени" вместо "Динамические тени". Как думаешь, Striver?
Я за "Динамические тени", хотя тут тебе решать... Но уж точно желательно переводить одинаково Динамичный-Динамический и Статичный-Статический, поэтому:

Цитировать
Поскольку CopperCube также поддерживает статичное освещение (карта освещения), то можно использовать оба метода освещения в одной и той же сцене:
Поскольку CopperCube также поддерживает статическое освещение (карта освещения), то можно использовать оба метода освещения в одной и той же сцене:

Цитировать
Вам нужно только указать тип освещения "Lightmapping" «Статичный (карта освещения)» в  материале для объектов, которые должны быть статично освещены, и "Dynamic" «Динамический» для объектов, которые должны быть освещены с использованием динамических теней.
Вам нужно только указать тип освещения "Lightmapping" «Статический (карта освещения)» в  материале для объектов, которые должны быть статично освещены, и "Dynamic" «Динамический» для объектов, которые должны быть освещены с использованием динамических теней.



Цитировать
Обратите внимание, что в настоящее время невозможно отображать динамические тени на объектах, на которых есть карты освещения, и наоборот.
Обратите внимание, что в настоящее время невозможно отображать динамические тени на объектах, у которых включены карты освещения, и наоборот.
Название: 3D-звуки
Отправлено: Striver от 13 Май 2019, 10:11:46
3D-звуки

Цитировать
Примечание: При использовании целевой платформы Flash (.swf) (старые версии 5.х) CopperCube поддерживает воспроизведение только файлов .mp3. При использовании  целевой платформы Windows (.exe) проигрыватель поддерживает все форматы файлов, кроме файлов .mp3.
Вот, блин, геморрой-то...

Цитировать
Если вы выбирали не поддерживаемый формат файла и опубликовали свою сцену, то CopperCube напечатает предупреждение.
Если вы выбрали не поддерживаемый формат файла и опубликовали свою сцену, то CopperCube напечатает предупреждение.

Цитировать
Вы можете выбрать, должен ли звук не проигрываться (nothing), повторяться (looping), воспроизводиться только один раз (Play_once) или воспроизводиться в случайном порядке (random).
Вы можете выбрать, должен ли звук не проигрываться (nothing), повторяться (looping), воспроизводиться только один раз (Play_once) или воспроизводиться случайным образом (random).

Цитировать
Внутри этого радиуса звук воспроизводится с максимальной громкостью, а вне радиуса звук будет более тихим, по мере удаления слушателя (активной камеры).
Внутри этого радиуса звук воспроизводится с максимальной громкостью, а вне радиуса звук будет становиться всё тише по мере удаления слушателя (активной камеры).
Название: Re: CopperCube
Отправлено: Samovar от 14 Май 2019, 05:36:35
Благодарю. Поправил. Остановился на варианте "динамические и статические тени".
Цитировать
Цитировать
Примечание: При использовании целевой платформы Flash (.swf) (старые версии 5.х) CopperCube поддерживает воспроизведение только файлов .mp3. При использовании  целевой платформы Windows (.exe) проигрыватель поддерживает все форматы файлов, кроме файлов .mp3.
Вот, блин, геморрой-то...
Как вариант, аудиоплейер Aimp, он умеет пакетно конвертировать звуковые файлы: "ПКМ на выделенных файлах -> Отправить файлы -> Аудиоконвертер"
Название: Re: CopperCube
Отправлено: Samovar от 15 Май 2019, 19:35:09
Эффекты постобработки

CopperCube поддерживает эффекты постобработки, которые помогут придать вашим 3D-сценам большую привлекательность без особых усилий. Эта функция работает только в профессиональной и студийной версиях CopperCube.
Чтобы включить эффекты, просто выберите меню "Scenes -> Scene Post Effects" «Сцена -> Эффекты постабработки сцены» и затем установите флажок на против любого из перечисленных эффектов.

(https://www.ambiera.com/coppercube/doc/images/dlg_posteffects.png)


Bloom (Свечение)
Эффект постобработки "Bloom" «Свечение» имитирует свечение, создавая ореол вокруг ярких областей изображения сцены. Доступные параметры:
(https://www.ambiera.com/coppercube/doc/images/posteffects.jpg)


Black and White (Черно-белый)
Просто отображает сцену в оттенках серого, а не в цветах.

(https://www.ambiera.com/coppercube/doc/images/posteffects_bw.jpg)


Invert (Инверсия или негатив)
Просто инвертирует цвета изображения. В сочетании с другими эффектами вы можете создавать такие эффекты, как ночное видение и тому подобное.

(https://www.ambiera.com/coppercube/doc/images/posteffects_invert.jpg)


Blur (Размытие)
Размывает изображения и делает его менее резким. Доступные параметры:
(https://www.ambiera.com/coppercube/doc/images/posteffects_blur.jpg)


Colorize (Тонирование или колоризация)
Тонирует изображение, умножая цвет каждого пикселя на определённый цвет. Доступные параметры:
(https://www.ambiera.com/coppercube/doc/images/posteffects_colorize.jpg)


Vignette (Виньетка)
Затемняет границы изображения эллипсом, делая сцену похожей на старый фильм. Доступные параметры:


(https://www.ambiera.com/coppercube/doc/images/posteffects_vignette.jpg)


Изменение эффектов постобработки во время выполнения
Вы можете изменять параметры и включение/отключение эффектов постобработки во время выполнения приложения, используя функцию JavaScript ccbSetSceneNodeProperty. Например, создайте действие  "Execute Java Script" «Выполнить Java Script» и вставьте этот код, чтобы включить эффект Bloom (Свечение):
Код
ccbSetSceneNodeProperty(ccbGetRootSceneNode(), "Bloom", true);
Вы можете использовать подобные команды, например, для того, чтобы менять цвет с течением времени, или окрасить экран, и.т.п.


Технические ограничения
Существует несколько технических ограничений для эффектов постобработки:
Название: Re: CopperCube
Отправлено: Samovar от 15 Май 2019, 22:27:57
Карты освещения

Редактор CopperCube имеет встроенный алгоритм для расчёта карт глобального освещения, которые могут сделать трехмерные сцены более интересными, вычисляя статический свет и тени для неподвижной геометрии:

(https://www.ambiera.com/coppercube/doc/images/lightmapping.jpg)
Без карты освещения и с картой

Этот раздел является кратким обзором по использованию алгоритма расчёта карт статического освещения. Если вы хотите использовать динамическое освещение и тени, взгляните на обзор Динамических теней.

Сцена для карт освещения
Чтобы использовать алгоритм расчёта карт освещения (Lightmapper), просто создайте сцену в редакторе по крайней мере с одной полигональной сеткой. Импортируйте какой-нибудь 3D-файл полигональной сетки в редактор или создайте свой собственный с помощью кнопок  'Add cube' «Добавить куб», 'Add plane'  «Добавить плоскость» и аналогичных кнопок:

(https://www.ambiera.com/coppercube/doc/images/lightmapper_tut1.jpg)
Сцена, которая будет освещена

Теперь нажмите кнопку 'Add point light' «Добавить точечный источник света» на вкладке 'Create' «Создать», чтобы добавить точечный источник света. Кроме того, вы можете кликнуть правой кнопкой мыши на сцене и выбрать 'Insert -> Create a point light' «Вставить -> Создать точечный источник света». Переместите свет поближе к вашей полигональной сетке. Затем на вкладке 'Light Mapping' «Карта освещения» нажмите 'Calculate!' «Рассчитать!». Сцена теперь должна примерно выглядеть так:

(https://www.ambiera.com/coppercube/doc/images/lightmapper_tut2.jpg)
Та же сцена с картой освещения

Если ваша сцена получилась темной, то вероятно, что радиус источника света не достаточно велик, либо свет загораживает преграда или нечто подобное. Немного переместите источник света, и попробуйте отрегулировать его настройки. Если источник света выделен, то вы можете  регулировать его настройки во вкладке  'Attributes' «Атрибуты» окна свойств. Например, попробуйте увеличить радиус освещения, или, если хотите, измените цвет источника света.

(https://www.ambiera.com/coppercube/doc/images/lightmapper_tut3.png)
Свойства источника света

Вы можете добавить больше источников света в сцену.
Также, есть несколько настроек расчёта карт освещения, которые вы можете менять:

(https://www.ambiera.com/coppercube/doc/images/lightmapper_tut4.png)
Настройки расчёта карт освещения


Свет и тени, созданные с использованием этой техники, являются статическими и не перемещаются при движении объекта или источника света. Если вы хотите использовать динамические тени, то используйте технологию динамических теней.
Название: Эффекты постобработки
Отправлено: Striver от 16 Май 2019, 18:21:03
Эффекты постобработки

Цитировать
Чтобы включить эффекты, просто выберите меню "Scenes -> Scene Post Effects" «Сцена -> Эффекты постабработки сцены» и затем установите флажок на против любого из перечисленных эффектов.
Чтобы включить эффекты, просто выберите меню "Scenes -> Scene Post Effects" «Сцена -> Эффекты постабработки сцены» и затем установите флажок напротив любого из перечисленных эффектов.

Цитировать
Влияет, насколько сильно размыто свечение.
Влияет на то, насколько сильно размыто свечение.

Цитировать
Например, используйте 0.4, чтобы светилось много светлых областей, и 0.9, чтобы использовать для свечения только очень яркие области.
Например, используйте 0.4, чтобы светилось много светлых областей, и 0.9, чтобы использовать для свечения только очень яркие областей.

Цитировать
Эффекты постобработки работают на WebGL, но если браузер поддерживает только WebGL 1, то они будут выглядеть такими чёткими, поскольку WebGL 1 не поддерживает рендеринг не в степени двойки.
Эффекты постобработки работают на WebGL, но если браузер поддерживает только WebGL 1, то они не будут выглядеть резкими, поскольку WebGL 1 не поддерживает цели рендеринга, отличные от степени двойки.

Цитировать
Он будут выглядеть так же, как на Windows .exe и других платформах, когда браузер поддерживает WebGL 2
Они будут выглядеть так же, как на Windows .exe и других платформах, если браузер поддерживает WebGL 2.
Название: Карты освещения Сцена теперь должна примерно выглядеть так: Сцена теперь должна
Отправлено: Striver от 16 Май 2019, 18:32:36
Карты освещения

Цитировать
Сцена теперь должна примерно выглядеть так:
Сцена теперь должна выглядеть примерно так:

Цитировать
Если вы хотите проверить приблизительное освещение от источников света, то можете переключиться в режим 'Diffuse' «Диффузное», который не рассчитывает тени, но очень быстр.
Если вы хотите грубо оценить освещение от источников света, то можете переключиться в режим 'Diffuse' «Диффузное», который не рассчитывает тени, но очень быстр.
Название: Re: CopperCube
Отправлено: Samovar от 17 Май 2019, 02:27:44
Благодарю. Поправил.
Надо сказать, что я немного огорчился после переведённого, думая, что в CopperCube сильно ограничены возможности движка Irrlicht. Но оказывается есть дополнительный редактор текстур и типов материалов, который не описан в справке по CopperCube. Карты освещения можно запекать в Блендере, создав 2 UV-развёртки (одну для диффузной текстуры, а вторую для lightmap) и импортировать в CopperCube через формат B3D. Дополнение для Блендера 279 лежит здесь и прикреплёно к сообщению. Но об этом позже, после перевода справки. Надо читать документацию к Irrlicht по типам материалов и текстур для них.
Название: Re: CopperCube
Отправлено: Samovar от 17 Май 2019, 04:30:46
Карты нормалей

Редактор CopperCube поддерживает карты нормалей (Normal maps), которые представляют собой продвинутые карты рельефа (Bump maps), применяемые к 3D-моделям. Это позволяет выглядеть простой геометрии более интересно:

(https://www.ambiera.com/coppercube/doc/images/normalmapping.jpg)
Слева без карты нормалей, справа с картой нормалей


Далее краткий обзор о том, как использовать эту возможность.


Применение карт нормалей

Использовать карты нормалей в 3D-сценах не сложнее, чем просто выбрать 'Normal mapped' «С картой нормалей» в качестве типа материала для любой полигональной сетки. Первая текстура - это диффузная карта, а вторая должна быть картой нормалей:

(https://www.ambiera.com/coppercube/doc/images/normalmapper_tut1.jpg)
Материалы с картой нормалей


Обратите внимание, что вы ничего не увидите в своей сцене, если у вас там нет источников света. Карты нормалей (обычно синего цвета) могут быть созданы бесплатными программами или загружены из Интернета. Также, есть плагины для создания карт нормалей из карт рельефа (Bump maps), в таких редакторах 2D-изображений, как Photoshop, Gimp или Paint.NET.


Исправление "неправильно выглядящих" карт нормалей

CopperCube использует тангенциальные карты нормалей для рендеринга рельефа. Если вы измените развёртку для 3D-сетки или модифицируете сетку с помощью редактора в CopperCube, то бинормали и касательные не обновятся, и  отображение рельефа может выглядеть неправильно. Кроме того, если вы импортировали полигональную сетку  каким-то особым, необычным способом, то CopperCube не сможет правильно рассчитать  бинормали и касательные для неё. В обоих случаях простое решение состоит в том, чтобы позволить CopperCube пересчитать бинормали и касательные.

Выделите полигональную сетку (меш), которую вы хотите исправить, кликните правой кнопкой мыши и выберите "Modify Selection -> Recalculate Tangents and Binormals" «Изменить выделение -> Пересчитать касательные и бинормали»:

(https://www.ambiera.com/coppercube/doc/images/normalmapping_tut2.jpg)


После нажатия OK в этом диалоговом окне, бинормали и касательные должны были быть исправлены.


Технические ограничения

Карты нормалей в CopperCube работают с четырьмя источниками света одновременно, а также с окружающим светом (Ambient), со следующими ограничениями:


Я не особо соображаю в векторной алгебре и высшей математике, потому, поправь термины, пожалуйста, Striver, если они неверны.
Название: Re: CopperCube
Отправлено: Samovar от 17 Май 2019, 06:21:57
Скелетная анимация персонажа

CopperCube поддерживает анимацию персонажей в реальном времени, также известную как скелетная анимация. Это делается с помощью анимированного скелета прикреплённого к "коже" (Skin) ,то есть к полигональной сетке (или мешу), состоящей из  вершин. Вы можете моделировать и анимировать персонажи с помощью любого трехмерного программного обеспечения, затем экспортируя его в один из следующих форматов файлов и импортируя их в Coppercube:
Рекомендуемое программное обеспечение для импорта анимированных персонажей

Существует множество программ для 3D-моделирования с возможностью анимации 3D-персонажей. В этой таблице перечислены некоторые рекомендуемые программы и соответствующие экспортеры:


Программа 3D-моделирования
Экспортёр   
Комментарий

Milkshape
встроен 
Milkshape - это недорогое программное обеспечение для 3D-моделирования и анимации. CopperCube импортирует файлы .ms3d Milkshape напрямую.

Blender   
встроен   
Используйте экспорт в FBX.

Альтернатива: Blender (тестировано на версии 2.66, который можно скачать здесь) экспортирует в .x. Используйте команду 'Export to DirectX' и выберите 'all animations' «все анимации» в параметрах экспорта.

3Ds Max   
FBX   
Используйте встроенный экспортер FBX. Смотрите описание здесь.

Panda Exporter for .x   
Panda Exporter - это бесплатный плагин для 3Ds Max, который экспортирует анимированные файлы в формат .x Также прочтите этот урок на форуме CopperCube.

max2ms3d  
Max2ms3d от Martin Collberg экспортирует .ms3d-файлы формата Milkshape из 3Ds Max, которые можно импортировать в CopperCube.
   
CGDev Max .x Exporter   
Экспортирует вашу модель в виде файла DirectX .x, который можно импортировать в CopperCube.
   
B3d Pipeline   
B3d Pipeline включает в себя экспортер из 3ds Max в формат B3D, который можно импортировать в CopperCube.

Maya   
FBX  
Используйте встроенный экспортер FBX. Смотрите описание здесь.

Microsoft .x exporter   
Плагин экспортера .x (включая исходный код в DirectX SDK), который можно скомпилировать для различных версий Maya.
   
XExporter   
XExporter от Markus Bergqvist, работает с Maya 7.0 и, вероятно, во всех версиях после 4.5 включительно.
   
cvXporter   
cvXporter является экспортером файлов DirectX .x для Maya. Начиная с версии 1.1, переписан на Python и будет работать только в версиях Maya 8.5 и более поздних.

Cinema 4D   
разные   
Используйте встроенный экспортер FBX.
Альтернатива: В этой теме на форуме Ambiera есть несколько полезных советов о том, как экспортировать анимированные полигональные сетки из Cinema4D в CopperCube.

Другие       
В Интернете доступны другие инструменты и другие экспортеры, которые могут экспортировать в файлы в .fbx, .ms3d, .b3d и .x. Если хотите расширить этот список, то свяжитесь с нами.


Импорт и редактирование

Чтобы импортировать анимированный персонаж, используйте меню 'File -> Import -> Animated 3D Mesh' «Файл» -> «Импорт» -> «Анимированная 3D-модель» или нажмите кнопку  'Import animated Mesh' «Импорт анимированной 3D-модели» на вкладке 'Create' «Создать».

(https://www.ambiera.com/coppercube/doc/images/animation_props.png)
Выбор текущей анимации анимированной 3D-модели


В окне свойств анимированной полигональной сетки вы можете установить необходимое значение 'Frames Per Second' «Кадров в секунду», изменяющее скорость отображения анимации, и задать имя отображаемой анимации. В начале у вас обычно есть только две анимации на выбор: 'All' «Все» и 'None' «Нет». Чтобы задать интервалы отдельных анимационных циклов из всей анимации модели, вы можете выбрать запись '<edit>' «<редактировать>». При этом откроется редактор анимации. В качестве альтернативы используйте команду меню 'View -> Show Animated Mesh Editor' «Вид -> Показать редактор анимированных полигональных сеток». Редактор откроется и будет выглядеть так:

(https://www.ambiera.com/coppercube/doc/images/animation_editor.png)
Редактор анимации


Выбирая анимацию  'All' «Все», вы можете установить значение 'Frames Per Second' «Количество кадров в секунду» (fps) по умолчанию в правом нижнем углу окна редактирования. Чтобы добавить новую анимацию, просто нажмите кнопку «+» и отредактируйте ее свойства. В приведенном ниже примере мы задали цикл анимации ходьбы (walk), в интервале от 1 до 19 кадра:

(https://www.ambiera.com/coppercube/doc/images/animation_editor2.png)
Определение анимации


После определения интервалов этой анимации, ее можно выбрать в окне свойств анимированной полигональной сетки для воспроизведения или с помощью setSceneNodeAnimation(node, "walk") в ActionScript 3 (Старые версии CopperCube 5.х с поддержкой Flash), или ccbSetSceneNodeProperty(sceneNode, "Animation", "walk") с использованием JavaScript ,

Используя контекстное меню редактора анимации, вы можете перезагрузить анимированную полигональную сетку с диска (Reload from disk), создать другой экземпляр этой сетки в сцене (Сreate Instance), переименовать файл (Rename) или использовать другие дополнительные функции.

(https://www.ambiera.com/coppercube/doc/images/animation_editor3.png)
Контекстное меню редактора анимации


Смешивание анимаций

Начиная с версии 5, CopperCube смешивает анимации при переключении между ними. Эта функция включается автоматически, но ее можно отключить или настроить для каждой анимированной модели вручную в редакторе или с помощью скрипта.
Это также означает, что вам не нужно создавать идеальные анимационные циклы. Движок будет автоматически смешивать неподходящие анимационные циклы, чтобы они выглядели достаточно хорошо.
Чтобы отключить эту функцию, снимите флажок 'AnimationBlending' «Смешивание анимаций» в окне свойств, когда выбран анимированный меш. Чтобы отключить эту функцию с помощью JavaScript, сделайте так:
Код
var s = ccbGetSceneNodeFromName("ВашаМодель");
ccbSetSceneNodeProperty(s, "AnimationBlending", false);

Таким же образом вы можете изменить время смешивания анимации, используя для этого свойство 'BlendTimeMs' «Время смешивания в миллисекундах» .


Прикрепление узлов

Начиная с версии 5, CopperCube может прикреплять любой тип узла сцены к части скелета анимированной полигональной сетки:

(https://www.ambiera.com/coppercube/doc/images/animation_attachement.png)
Оружие, прикрепленное к правой руке анимированной модели


Вы можете прикрепить что угодно к анимированной полигональной сетке, от других полигоналиных сеток, до билбордов и систем частиц. Для этого сделайте следующее:
Примечание: Некоторые из анимированных полигональных сеток, которые вы можете найти в качестве ресурсов CopperCube, имеют соединения, настроенные так, что имеют отрицательный масштаб, в результате чего прикрепленный объект выглядит вывернутым наизнанку. Вы можете исправить это, установив масштаб прикреплённого объекта (-1, -1, -1).
Название: Карты нормалей
Отправлено: Striver от 17 Май 2019, 09:12:27
Карты нормалей
О, класс! Ошибок не вижу.

Цитировать
Я не особо соображаю в векторной алгебре и высшей математике, потому, поправь термины, пожалуйста, Striver, если они неверны.
Если ты имеешь ввиду термины binormals and tangents, то, боюсь, я тоже не очень понимаю, что это такое. tangents может быть в равной степени тангенсом или касательной. Слово binormals мне раньше вообще не попадалось. Подозреваю, что эти термины тут являются специфичными внутренними для движка Coppercube (или, например, Irrlicht). Как вариант, можно их оставить в английском написании, чтобы снять с себя ответственность.
Название: Скелетная анимация персонажа
Отправлено: Striver от 17 Май 2019, 15:51:52
Скелетная анимация персонажа

Цитировать
Это делается с помощью анимированного скелета прикреплённого к "коже" (Skin) ,то есть к полигональной сетке (или мешу), состоящей из  вершин.
Это делается с помощью анимированного скелета, прикреплённого к "коже" (Skin), то есть к полигональной сетке (или мешу), состоящей из вершин.

Цитировать
Вы можете моделировать и анимировать персонажи с помощью любого трехмерного программного обеспечения, затем экспортируя его в один из следующих форматов файлов и импортируя их в Coppercube:
Вы можете моделировать и анимировать персонажи с помощью любого трехмерного программного обеспечения, затем экспортировать его в один из следующих форматов файлов, и импортировать в Coppercube:

Цитировать
После определения интервалов этой анимации, ее можно выбрать в окне свойств анимированной полигональной сетки для воспроизведения или с помощью setSceneNodeAnimation(node, "walk") в ActionScript 3 (Старые версии CopperCube 5.х с поддержкой Flash), или ccbSetSceneNodeProperty(sceneNode, "Animation", "walk") с использованием JavaScript ,
После определения интервалов этой анимации, её можно выбрать в окне свойств анимированной полигональной сетки для воспроизведения или с помощью функции setSceneNodeAnimation(node, "walk") в ActionScript 3 (Старые версии CopperCube 5.х с поддержкой Flash), или ccbSetSceneNodeProperty(sceneNode, "Animation", "walk") в JavaScript.

Цитировать
Движок будет автоматически смешивать неподходящие анимационные циклы, чтобы они выглядели достаточно хорошо.
Движок будет автоматически смешивать недостаточно подогнанные анимационные циклы, чтобы они выглядели хорошо.

Цитировать
Вы можете прикрепить что угодно к анимированной полигональной сетке, от других полигоналиных сеток, до билбордов и систем частиц.
Вы можете прикрепить что угодно к анимированной полигональной сетке, от других полигональных сеток, до билбордов и систем частиц.
Название: Re: CopperCube
Отправлено: Samovar от 17 Май 2019, 17:04:41
Благодарю. Поправил.


Физика в CopperCube

CopperCube включает в себя физический движок для автоматического перемещения объектов и их столкновения. Этот раздел представляет из себя небольшой обзор того, как это работает.


Встроенная система реагирования на столкновения

По умолчанию в CopperCube включена простая и очень быстрая система реагирования на столкновения. Он работает во всех целевых платформах с очень высокой производительностью, даже на медлительных, таких как Flash, Android и WebGL.

С помощью неё персонажи могут перемещаться по трехмерному миру, подниматься по лестницам и сталкиваться со стенами. Вам нужно только добавить поведение Collide when moved (Сталкиваться при перемещении)  к объекту, и тогда все будет работать автоматически.
Однако эта система также имеет недостатки:
Если вам нужны более продвинутые физические функции в вашем приложении, то вы можете использовать «реалистичный» физический движок в CopperCube:


Встроенный физический движок

В качестве альтернативы, CopperCube также располагает встроенным «реалистичным» физическим движком. Благодаря ему объекты будут сталкиваться друг с другом, влиять друг на друга и тому подобное, как в реальном мире.
Чтобы это заработало, вам нужно включить физический движок в диалоговом окне настроек публикации. Физический движок поддерживается только для этих целевых платформ: Windows .exe и Mac OS X .apps.
Как и раньше, для перемещения персонажей, движущихся по миру, используйте поведение Collide when moved (Сталкиваться при перемещении), и добавьте поведение Object moved by physics  engine (Объект перемещается физическим движком)  к объектам, которые следует перемещать в трехмерном мире, например, к бочкам или ящикам.

Система физики работает хорошо, но есть несколько ограничений:
Название: Re: CopperCube
Отправлено: Samovar от 17 Май 2019, 18:34:35
Набор ресурсов

CopperCube поддерживает набор ресурсов, для быстрого доступа к готовым 3D-объектам. Вы можете легко загружать и размещать готовые 3D-объекты в своих 3D-сценах, просто выбрав их в окне ресурсов (Prefabs).

(https://www.ambiera.com/coppercube/doc/images/prefabs.png)
Окно набора ресурсов


Как добавить внешние ресурсы в CopperCube
CopperCube поставляется с набором предустановленных ресурсов. Если вы скачали и распаковали архив с дополнительными ресурсами, установить их в CopperCube довольно просто: кликните правой кнопкой мыши в окне ресурсов, выберите 'Add directory with prefabs' «Добавить каталог с ресурсами» и выберите нужный каталог. Удаление и редактирование каталогов ресурсов возможно в диалоговом окне  'Options' «Параметры» ('Tools -> Options', «Инструменты -> Параметры»).


Как создать свои собственные ресурсы
Создавать свои собственные ресурсы довольно просто: просто экспортируйте свою файл CopperCube как ресурс CopperCube, используя меню 'File -> Export -> Save current file as CopperCube Prefab' «Файл -> Экспорт -> Сохранить текущий файл как ресурс CopperCube». Обратите внимание, что если ваш файл содержит более одной сцены, то только первая сцена будет использоваться в качестве ресурса. Кроме того, не забудьте почистить сцену, а так же удалить ненужные скайбоксы и тому подобное перед экспортом.

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


Добавление значков вашим ресурсам
Чтобы ваши ресурсы отображались красивыми значками в окне ресурсов CopperCube, просто создайте файл растрового изображения .bmp с именем, как и имя вашего ресурса, в том же каталоге. Например, если ваш ресурс называется foobar.ccp, то вы должны создать растровое изображение с именем foobar.bmp в том же каталоге. Растровое изображение должно быть размером 32x32 пикселя. Цвет (255,0,255) считается прозрачным.


Добавление информации об авторских правах вашим ресурсам
Подобно созданию значка, вы также можете добавить информацию об авторских правах в ваш ресурс. Просто создайте текстовый файл .txt с именем,  как и имя вашего ресурса, в том же каталоге. Например, если ваш ресурс называется foobar.ccp, то вы должны создать текстовый файл с именем foobar.txt в том же каталоге. Содержимое этого файла будет показано при клике правой кнопкой мыши на вашем ресурсе в CopperCube.
Название: Re: CopperCube
Отправлено: Samovar от 17 Май 2019, 20:21:36
Воспроизведение видео в CopperCube

Профессиональная версия CopperCube поддерживает воспроизведение видео, как в 2D, так и в 3D. Этот раздел представляет из себя небольшой обзор того, как это работает.

Система воспроизведения видео
Профессиональная версия CopperCube включает в себя возможность для воспроизведения видео на платформах Windows .exe и WebGL. Видео можно воспроизводить в 2D (на 2D-наложении) или в 3D (на любом 3D-объекте в сцене). Можно влиять на воспроизведение с помощью действий (play/stop/pause "воспроизведение / остановка / пауза") и реагировать, когда воспроизведение видео закончилось или не удалось.
Чтобы воспроизвести видео, сделайте следующее:
Вот и все, теперь вы можете воспроизводить видео.

Ограничения воспроизведения видео для различных платформ
Некоторые технические детали того, как работает воспроизведение видео в зависимости от целевой платформы:

Платформа
Поддерживаемые форматы  
Комментарии

WebGL   
В основном все форматы файлов, которые может воспроизводить браузер. Наши тесты показали, что .mp4 работает лучше всего, но также работает и .ogv.
Не все браузеры одинаково поддерживают одни и те же видеофайлы. Обязательно протестируйте воспроизведение видео во всех браузерах, прежде чем публиковать свою работу.

Windows .exe   
Воспроизведение видео работает в Windows со всеми установленными видеодекодерами DirectShow. Вы можете загрузить и установить дополнительные, а стандартные по умолчанию работают с основными видеоформатами, такими как MPEG-1 и MPEG-2. Обратите внимание, что декодер для вашего конкретного видео необходимо установить в целевой системе, поэтому обязательно используйте общий кодек, который установлен во всех системах, или предлагайте установить кодек в системе.   
При воспроизведении видео, частота кадров вашего приложения должна быть высокой, чтобы синхронизировать его со звуком. Убедитесь, что ваше приложение не совершает излишнее множество других действий при воспроизведении видео.

Название: Re: CopperCube
Отправлено: Samovar от 17 Май 2019, 20:57:43
Интерфейс командной строки

Профессиональная версия CopperCube поддерживает расширенные параметры командной строки для пакетной работы с фалами. Синтаксис:

CopperCube.exe [файл] [-import:файл] [-runscript:код] [-save:файл] [-publish:WebGL|Flash|Windows|MacOSX|Android] [-quit]

Пример:
Код
CopperCube -import:somefile.3ds -save:myscene.ccb -publish:WebGL -quit
Это позволяет импортировать файл 3DStudio 'somefile.3ds', сохранить его как 'myscene.ccb' и опубликовать как сцену WebGL. После выполнения редактор закроется.

Подробно:
Чтобы использовать интерфейс командной строки в Mac OS X, запустите командную строку для бинарного файла приложения, находящегося внутри пакета .app.
Название: Re: CopperCube
Отправлено: Samovar от 17 Май 2019, 21:30:48
Перевод на русский справки CopperCube с английским интерфейсом, потихоньку близится к своему завершению... (затем в планах полный перевод интерфейса  CopperCube на русский и модификация этой справки со скриншотами русского интерфейса, если мне это не наскучит :) )
Кстати, Striver. Как желаешь указать своё участие в переводе, и как это лучше сформулировать?
Варианты:


Ясен пень, перевод справки по CopperCube бесплатен. Но мне не особо охота, что бы этот перевод распространялся людьми  (репостился на иных сайтах) целиком без нашего ведома, или частично, без указания ссылок на форум  http://blender-3d.ru/forum и твой сайт как одного из его авторов... и тем более я не желаю, что бы кто-то продавал его или изменял, приписывая себе авторство... как лучше сформулировать лицензию на использование перевода и где её лучше разместить в финальной справке?
Или просто указать авторов перевода и всё, т.к. согласия на перевод этой справки на русский нам никто не давал (значит и прав  на перевод у нас особых нет, в соответствии с ГК РФ)? Или стоит написать разработчикам CopperCube и спросить письменного их разрешения? Либо, вообще не парится ? :)
Что думаешь на это счёт?

Название: Re: CopperCube
Отправлено: Samovar от 17 Май 2019, 22:34:40
Перевод на русский справки CopperCube с английским интерфейсом, потихоньку близится к своему завершению... (затем в планах полный перевод интерфейса  CopperCube на русский и модификация этой справки со скриншотами русского интерфейса, если мне это не наскучит :) )
Кстати, Striver. Как желаешь указать своё участие в переводе, и как это лучше сформулировать?
Варианты:


Ясен пень, перевод справки по CopperCube бесплатен. Но мне не особо охота, что бы этот перевод распространялся людьми  (репостился на иных сайтах) целиком без нашего ведома, или частично, без указания ссылок на форум  http://blender-3d.ru/forum и твой сайт как одного из его авторов... и тем более я не желаю, что бы кто-то продавал его или изменял, приписывая себе авторство... как лучше сформулировать лицензию на использование перевода и где её лучше разместить в финальной справке?
Или просто указать авторов перевода и всё, т.к. согласия на перевод этой справки на русский нам никто не давал (значит и прав  на перевод у нас особых нет, в соответствии с ГК РФ)? Или стоит написать разработчикам CopperCube и спросить письменного их разрешения?  Упаковать всё в инсталятор с лицензионным соглашением :) Либо, вообще не парится ? :)
Что думаешь на это счёт?

Название: Re: Карты нормалей
Отправлено: Samovar от 17 Май 2019, 22:45:30
Карты нормалей
О, класс! Ошибок не вижу.

Цитировать
Я не особо соображаю в векторной алгебре и высшей математике, потому, поправь термины, пожалуйста, Striver, если они неверны.
Если ты имеешь ввиду термины binormals and tangents, то, боюсь, я тоже не очень понимаю, что это такое. tangents может быть в равной степени тангенсом или касательной. Слово binormals мне раньше вообще не попадалось. Подозреваю, что эти термины тут являются специфичными внутренними для движка Coppercube (или, например, Irrlicht). Как вариант, можно их оставить в английском написании, чтобы снять с себя ответственность.
Оставил, как выкладывал на форум.

Гы... предыдущий пост вышел дублированным, из-за кучи правок и превышения лимита времени для редактирования... да и хрен с ним :)
Кстати, оригинальная документация по CopperCube, не полная и временами кривая... но дополнять её, пока не переведён полностью интерфейс на русский, не вижу смысла...
Название: Re: CopperCube
Отправлено: Striver от 18 Май 2019, 16:07:06
Цитировать
Кстати, Striver. Как желаешь указать своё участие в переводе, и как это лучше сформулировать?
Варианты:
Перевод на русский: Samovar и Striver специально для форумчан (жителей?) и гостей форума http://blender-3d.ru/forum
Перевод на русский: Samovar под редакцией Striver специально для форумчан (жителей?) и гостей форума http://blender-3d.ru/forum
Иное?
Да, в принципе, меня можно не упоминать, моя ленивая задница тут почти ничего не делала.

Цитировать
специально для форумчан (жителей?) и гостей форума
ну, раз уж тут на форуме почти под всеми псевдонимами стоит слово "житель", логично так и писать...

Цитировать
Но мне не особо охота, что бы этот перевод распространялся людьми  (репостился на иных сайтах) целиком без нашего ведома, или частично, без указания ссылок на форум  http://blender-3d.ru/forum и твой сайт как одного из его авторов... и тем более я не желаю, что бы кто-то продавал его или изменял, приписывая себе авторство...
В нынешних реалиях Интернета, если ты всего этого не хочешь, то надо срочно удалять всю эту ветку, пока кто-нибудь не успел себе скопировать, и больше никому не давать / нигде не выкладывать. Но, скорее всего, уже поздно  :) . Книжки с моими переводами я находил на самых разных помойках сайтах, причём часто упоминание обо мне, как переводчике, было тщательно вырезано даже из PDF-формата. Правда в том, что надо либо смириться с тем, что так всегда будет, либо ничего не выкладывать в Интернет.

Цитировать
Или просто указать авторов перевода и всё, т.к. согласия на перевод этой справки на русский нам никто не давал (значит и прав  на перевод у нас особых нет, в соответствии с ГК РФ)? Или стоит написать разработчикам CopperCube и спросить письменного их разрешения?  Упаковать всё в инсталятор с лицензионным соглашением :) Либо, вообще не парится ? :)
А вот в лицензиях (как и во всём юризме в целом) я ничего не понимаю, тут я тебе не советчик. Большинство-то моих переводов были откровенно пираЦЦкие...
Название: Физика в CopperCube
Отправлено: Striver от 18 Май 2019, 18:17:57
Физика в CopperCube

Цитировать
Если вы переместили часть статической геометрии и хотите чтобы физический движок учитывал это, то запустите команду JavaScript ccbUpdatePhysicsGeometry().
Если вы переместили часть статической геометрии и хотите, чтобы физический движок учитывал это, то запустите команду JavaScript ccbUpdatePhysicsGeometry().
Название: Набор ресурсов
Отправлено: Striver от 18 Май 2019, 18:34:01
Набор ресурсов

Цитировать
CopperCube поддерживает набор ресурсов, для быстрого доступа к готовым 3D-объектам.
CopperCube поддерживает набор ресурсов для быстрого доступа к готовым 3D-объектам.

Цитировать
Создавать свои собственные ресурсы довольно просто: просто экспортируйте свою файл CopperCube как ресурс CopperCube, используя меню 'File -> Export -> Save current file as CopperCube Prefab' «Файл -> Экспорт -> Сохранить текущий файл как ресурс CopperCube».
Создавать свои собственные ресурсы довольно просто: просто экспортируйте свой файл CopperCube как ресурс CopperCube, используя меню 'File -> Export -> Save current file as CopperCube Prefab' «Файл -> Экспорт -> Сохранить текущий файл как ресурс CopperCube».

Цитировать
Если вы хотите создать каталог ресурсов для использования другими людьми, убедитесь, что все текстуры, используемые ресурсами, включены в каталог ресурсов, и чтобы ни один из ваших ресурсов не ссылался на текстуру с локального жесткого диска не включенную в архив, который вы решили распространять.
Если вы хотите создать каталог ресурсов для использования другими людьми, убедитесь, что все текстуры, используемые ресурсами, включены в каталог ресурсов, и чтобы ни один из ваших ресурсов не ссылался на текстуру на локальном жестком диске, которая не включена в распространяемый вами архив.

Цитировать
Скопируйте в каталог «textures» все текстуры, которые вы собираетесь использовать вместе с ресурсам.
Скопируйте в каталог «textures» все текстуры, которые вы собираетесь использовать вместе с ресурсами.

Цитировать
В CopperCube присвойте объектам только текстуры из этого каталога.
В CopperCube присвойте объектам текстуры только из этого каталога.

Цитировать
Подобно созданию значка, вы также можете добавить информацию об авторских правах в ваш ресурс.
Подобно созданию значка, вы также можете добавить в ваш ресурс информацию об авторских правах.
Название: Воспроизведение видео в CopperCube
Отправлено: Striver от 18 Май 2019, 18:55:14
Воспроизведение видео в CopperCube

Цитировать
Профессиональная версия CopperCube включает в себя возможность для воспроизведения видео на платформах Windows .exe и WebGL.
Странно, что МакОС остался в пролёте

Цитировать
Можно влиять на воспроизведение с помощью действий (play/stop/pause "воспроизведение / остановка / пауза") и реагировать, когда воспроизведение видео закончилось или не удалось.
Можно влиять на воспроизведение с помощью действий (play/stop/pause "воспроизведение / остановка / пауза") и реагировать, когда воспроизведение видео закончилось или вообще не запустилось.

Цитировать
Создайте узел сцены на котором хотите отображать видео.
Создайте узел сцены, на котором хотите отображать видео.

Цитировать
Вы можете загрузить и установить дополнительные, а стандартные по умолчанию работают с основными видеоформатами, такими как MPEG-1 и MPEG-2.
Чем больше я всякой фигни перевожу, тем чаще мне слово "basic" хочется перевести не как "основной" (или даже совсем тупо "базовый"), а как "примитивный". Этот случай кажется именно таким. (Не подумайте, что я имею что-то против языка программирования Бэйсик  :) ). Но всё-таки пусть будет так:
Вы можете загрузить и установить дополнительные, а по умолчанию будут работать только встроенные видеоформаты, такие как MPEG-1 и MPEG-2.

Цитировать
При воспроизведении видео, частота кадров вашего приложения должна быть высокой, чтобы синхронизировать его со звуком.
При воспроизведении видео частота кадров вашего приложения должна быть высокой, чтобы синхронизировать его со звуком.
Название: Интерфейс командной строки
Отправлено: Striver от 18 Май 2019, 18:59:43
Интерфейс командной строки

Цитировать
Примечание: используйте опцию -save, чтобы сохранить документ перед тем как CopperCube его опубликует.
Примечание: используйте опцию -save, чтобы сохранить документ перед тем, как CopperCube его опубликует.
Название: Re: CopperCube
Отправлено: Samovar от 18 Май 2019, 21:42:08
Благодарю, Striver. Поправил. Остальное обдумываю... Отпишусь позже более подробно о своих соображениях. Но склоняюсь к тому, чтобы вообще не указывать авторства из-за ряда причин и ограничений, наложенных авторами CopperCube.


Поддержка устройств виртуальной реальности
Профессиональная версия CopperCube поддерживает устройства виртуальной реальности. Эта поддержка в настоящее время находится на стадии бета-версии. Обратите внимание, что при создании приложения с помощью этой функции вы несёте ответственность за возможный ущерб нанесённый людям вашим приложением. Не используйте эффекты, которые могут вызвать у людей приступы тошноты, головокружения или даже болезнь. Кроме того, перед запуском приложения рекомендуется показывать предупреждение.


Поддержка Oculus Rift
Профессиональная версия CopperCube поддерживает версии устройства Oculus Rift для DK1 и DK2 (это разрабатываемые версии Oculus Rift, а не конечный потребительский продукт). Поддержка этих устройств пока еще находится в стадии бета-версии, но тесты показали, что всё хорошо работает. В настройках публикации 'Publishing Settings' в «Windows .exe» просто установите флажок для устройств виртуальной реальности 'VR support (Oculus Rift)'.

(https://www.ambiera.com/coppercube/doc/images/oculus_rift_support.jpg)


Как это устроено
Название: Re: CopperCube
Отправлено: Samovar от 18 Май 2019, 22:47:47

Исправлено:
Цитировать
Обычно всё работает, но и возникнуть ошибки.
Обычно всё работает, но могут возникнуть и ошибки.
Название: Re: CopperCube
Отправлено: Samovar от 18 Май 2019, 22:53:21
Обзор программирования сценариев (написания скриптов) в CopperCube

Самый простой способ создания сценариев для приложений CopperCube - это использовать действие 'Execute JavaScript' «Выполнить JavaScript» и написать свой код на JavaScript непосредственно в CopperCube. Загляните в Справочник по JavaScript для получения списка всех доступных функций. После публикации, код JavaScript будет работать на всех целевых платформах , включая Windows .exe, Mac OS X .app, приложения WebGL и Android.

Кроме того, вы можете создавать свои собственные actions (действия) и behaviors (поведения), используя один и тот же API, и делиться ими с другими, используя тот же API-интерфейс JavaScript. На изображении ниже показаны расширения, которые были созданы таким образом:

(https://www.ambiera.com/coppercube/doc/images/scripted_action_moveposition.png)


Как работает система расширений и скриптов
Для использования/создания/загрузки нового действия или поведения вам нужен только один файл, который является стандартным текстовым файлом JavaScript. Вам только нужно сохранить его в каталоге расширений (Documents\CopperCube\extensions на Windows, ~/Documents/CopperCube/extensions в Mac OS X). Вы можете редактировать и сохранять файлы с помощью вашего любимого текстового редактора. CopperCube автоматически читает эти файлы при каждом создании приложения, поэтому их очень легко использовать и разрабатывать.


Создание собственных расширений
Загрузка расширений
Если вы не хотите изучать программирование, то вы можете загрузить расширения, созданные другими пользователями. Они доступны на официальном сайте:
Быстрая проверка сценариев с помощью действия  'Execute JavaScript'  «Выполнить JavaScript»
Кроме того, вы также можете напрямую использовать JavaScript API, используя встроенное действие 'Execute JavaScript' «Выполнить JavaScript». Вам не требуется создавать для этого действие или поведение, если вы этого не хотите. Просто введите код прямо в разделе  'Code' «Код» этого действия.

Смотрите Справочник по JavaScript для получения подробного списка всех доступных функций.


Советы по программированию и отладке
Вот несколько полезных советов по программированию и отладке в CopperCube:
Название: Re: CopperCube
Отправлено: Samovar от 19 Май 2019, 02:39:08
Платформа Windows (.exe)

При создании приложений Windows .exe в CopperCube доступны некоторые специальные функции:
Аргументы командной строки
При запуске каждого созданного файла .exe, можно использовать несколько аргументов командной строки:
Примеры:
Следующая командная строка запустит ваше приложение в оконном режиме:
Код
yourapplication.exe -windowed
Ниже будет использовать файл сценария «myscript.js» вместо скомпилированного внутри приложения, и покажет консоль отладки, если какая-либо строка текста будет напечатана в вашем сценарии. Это полезно, например, для разработки файла сценария без редактора CopperCube.
Код
yourapplication.exe -debug -script:myscript.js


Программирование с помощью JavaScript
Вы можете делать свои сцены CopperCube 3D Windows .exe более интерактивными, используя встроенный сценарный язык программирования JavaScript. Посмотрите Обзор программирования сценариев , что бы использовать эту возможность.


Кроме того, для этой целевой платформы вы можете использовать отдельный файл скрипта при разработке.
Если вы хотите использовать эту возможность, то выполните следующие действия:
Пример:
Запишите этот текст в свой файл .js:
Код
print("Всем привет!");
При тестировании вашей 3D-сцены из редактора CopperCube будет напечатан текст «Всем привет!» в консоли отладки.
CopperCube также предоставляет возможность для проверки правильности синтаксиса вашего скрипта, используйте для этого  меню 'Tools -> Compile Main Script' «Инструменты -> Скомпилировать основной скрипт».


Совет по разработке:
Если вы предпочитаете разрабатывать сценарий без запуска редактора CopperCube, вы можете сделать это с помощью аргументов командной строки -debug и -script: Смотрите раздел Аргументы командной строки.


Справка и примеры
Обзор программирования сценариев с описанием того, как использовать сценарии для всех целевых платформ.
В этой документации имеется исчерпывающая справка по сценариям JavaScript API.


Использование значка
В настройках публикации вы можете выбрать значок для вашего приложения Windows. Обратите внимание, что встраивание значка в ваше приложение может замедлить процесс публикации на несколько секунд, в зависимости от вашей операционной системы. Кроме того, некоторые версии Windows иногда вызывают ошибку во время этого процесса, и будут время от времени сообщать о "internal error" «внутренней ошибке», когда вы будете запускать тестирование приложения. Поэтому во время разработки лучше не выбирать значок.
Также обратите внимание, что эта функция не поддерживается в версии CopperCube для Mac OS X.


Поддержка Steam
Приложения Windows .exe, созданные CopperCube, поддерживают Steam от Valve и имеют встроенную интеграцию с этим сервисом.


(https://www.ambiera.com/coppercube/doc/images/steamsupport.jpg)


Чтобы протестировать его и разрабатывать свою игру, сделайте следующее:
Затем вы можете использовать функции JavaScript ccbSteamSetAchievement и ccbSteamResetAchievements для установки и сброса достижений Steam.


Оконные режимы
Поддерживаются два оконных режима: режим окна "Exclusive / Fixed Size" «Эксклюзивный / Фиксированный размер» с окном фиксированного размера и эксклюзивным разрешением в полноэкранном режиме, а также более новый режим окна, который известен как режим "Dynamic / Resizeable" «Динамический / Изменяемый размер». Вы можете установить желаемый оконный режим в настройках публикации.
Режим по умолчанию  "Dynamic / Resizeable" «Динамический / Изменяемый размер» имеет несколько преимуществ:
Этот режим обычно используется в большинстве современных игр.


Проверка того, что ваше приложение запустится на системе пользователя
Обычно файлы .exe, сгенерированные CopperCube, запускаются на всех операционных системах Windows, но иногда на них не установлен DirectX. Это приведет к тому, что некоторые шейдеры не будут работать, и ваша игра не будет хорошо выглядеть на ПК пользователя. Чтобы убедиться, что DirectX установлен в пользовательской системе, CopperCube имеет очень простой механизм, включенный в .exe, который предлагает установить DirectX в пользовательской системе, когда его там нет. Чтобы включить это, выполните следующие действия:
Папка вашей игры теперь должна выглядеть так:

(https://www.ambiera.com/coppercube/doc/images/redist.png)

Теперь если ваша CopperCube-игра обнаружит, что DirectX не установлен, то она покажет пользователю следующее сообщение:
"This app needs DirectX to be installed. Install now?". ("Для работы приложения требуется установка DirectX. Установить сейчас?".)
Вы также можете легко изменить текст этого сообщения: в папке 'dxredist' создайте текстовый файл с именем 'message.txt'. Там введите текст сообщения, который вы хотели бы показать пользователю.


Исходный код
Если вы хотите расширить приложение с помощью специальных пользовательских функций, вы можете сделать это, скомпилировав приложение самостоятельно и запрограммировав свои собственные дополнения. Вы можете получить исходный код, если вы являетесь владельцем CopperCube Studio Edition: В редакторе нажмите 'Help -> About', а затем кнопку "Download C++ Source" («Справка -> О программе», а затем кнопку «Загрузить исходный код C++»).
Код представляет собой проект VisualStudio 2005. Он основан на 3D-движке с открытым исходным кодом Irrlicht и его довольно легко расширить. Краткая документация о том, как собрать пакет, может быть найдена в корне с именем document.txt. Код также включает в себя части поддержки Oculus Rift, но он не поддерживается (бета), и вам, скорее всего, придется адаптировать его к более новым SDK Oculus Rift.

*Я не расставлял здесь всех гиперссылок, которые в оригинальном и переведённом HTML-документе, т.к. это долго... Прошу это учесть.
Название: Re: CopperCube
Отправлено: Samovar от 19 Май 2019, 03:39:12
Цитировать
Да, в принципе, меня можно не упоминать, моя ленивая задница тут почти ничего не делала.
А вот это ты зря :) Ты для меня авторитет и учитель (я учился Блендеру по некоторым из твоих переводов)... и даже если эти мои деферамбы к тебе опустить, то ты мне очень помогаешь, указывая на мои грамматические и синтаксические ошибки (странно, но я никогда не любил русский и литературу в школе, и у меня по этим предметам всегда были посредственные оценки) , постя свои сообщения в этой теме. Это меня нехило мотивирует продолжать перевод. Ты для меня как "волшебный пендель", стимулирующий меня завершить начатое :) А что до лени, то смею тебя уверить, что у меня её раз в 10 больше, чем у тебя...
Название: Re: CopperCube
Отправлено: Samovar от 19 Май 2019, 04:20:49
Цитировать
А вот в лицензиях (как и во всём юризме в целом) я ничего не понимаю, тут я тебе не советчик. Большинство-то моих переводов были откровенно пираЦЦкие...
Честно скажу, что в одно время меня это сподвигло уйти с 3ds max на Блендер... но всё оказалось тоже не просто :) Я тоже не шарю в юрисприденции :) Просто хотелось находится хоть в каком-то правовом поле... Кстати, не переживай, я тоже "пират"... ребята - разработчики CopperCube явно об этом по нагличански пишут тут https://www.ambiera.com/terms_and_conditions.html
Цитировать
Copy, reproduction or distribution of the software, source, documentation and images to any other location is expressly prohibited.
Копирование, воспроизведение или распространение программного обеспечения, исходного кода, документации и изображений в любое другое место категорически запрещено
... это странно, для документации, если они хотят двигать свой софт... :)
и что самое прикольное, они как и в России плевали на все пропиндосские лицензии, а-ля Сreative Commons:

Цитировать
9. Jurisdiction and Choice of Law
Insofar as not otherwise agreed, this Agreement shall be governed exclusively by Austrian law. Austrian law shall also be applied in case of you reside outside of Austria. You expressly agree that exclusive jurisdiction for any claim or dispute with Ambiera linked in any way to your use of its services resides in the competent court in the town of Vienna, Austria.

9. Юрисдикция и выбор законодательства
Если не оговорено иное, настоящее Соглашение регулируется исключительно австрийским законодательством. Австрийский закон также применяется в случае, если вы проживаете за пределами Австрии. Вы прямо соглашаетесь с тем, что исключительная юрисдикция в отношении любых претензий или споров с Ambiera, связанных каким-либо образом с использованием вами ее услуг, находится в компетентном суде города Вены, Австрия.

В России тоже всем насрать на лицензии от Creative Commons, все права на ПО и сопутствующую любую цифровую хрень регламентируются в Гражданском Кодексе Российской Федерации, как права на литературные произведения. Так что ребята, не особо обращайте внимания на эти лицензии, обращайте в первую очередь внимание на ГК РФ и Закон об авторском праве :)
Кстати, ГК РФ, тоже не на моей стороне, т.к. я не получил письменного разрешения авторов на перевод :) Единственное, что я могу сделать законно - это создать русскую версию данной документации со всеми собственными скринами русифицированного интерфейса CopperCube и тогда поставить там свою подпись (и людей, которые мне помогали). Так я буду не переводчиком, а автором русской документации на 100% , как если бы я написал свою книгу о CopperCube :) И это сложно, но это в планах...

Думаю привлечь  товарища sandman из Германии, что бы он обрисовал мне ситуацию в контексте австрийских законов... он там рядом в Германии... это почти один хрен :)  И по этому, нафиг надо, пока упоминать даже свои псевдонимы, как авторов перевода... Если пристебутся разработчики, то просто попрошу админа удалить тему...  но этот вариант справки в виде HTML уйдёт в сеть по любому, как будет завершён :)
Название: Re: CopperCube
Отправлено: Samovar от 19 Май 2019, 05:35:14
Кстати, в контексте вышеизложенного, я тебя не считаю пиратом, Striver. А считаю просветителем... пиратом ты бы был, если бы продавал свои переводы, и наживался на них, да и то, всё это спорно...
Вот такие соображения на данный момент времени у меня в голове... слишком много запретов на подобные знания для всех...  мы же не о секретных общественно-опасных вещах инфу пишем, в конце концов, и не какую-то секретную инфу, которая составляет государственную тайну :) ...

Ещё одын любопытный для меня вещ хотель у тебя давно спросить:
Какими прогами ты пользуешься, создавая переводы?  Вот с PDF у меня ваще всегда засада... не берусь за них, потому что не знаю как их привести в порядок для редактирования, обычно выходит какая-то  неудобоваримая каша при импорте в Open Office, Corel Draw или InkScape
Название: Re: CopperCube
Отправлено: Striver от 19 Май 2019, 11:01:33
Цитировать
Какими прогами ты пользуешься, создавая переводы?
Вот даже не знаю, что ответить... Пишу в LibreOffice, обычно по одному файлу на главу, потому что если делать сразу весь текст на несколько сотен страниц, то случаются страшные тормоза. Потом их всё-таки сливаю в один файл, но уже когда всё доделано. Оттуда уже экспортирую в нужные форматы. В PDF и HTML сразу есть экспорт, а вот если присписчит с FB2 заморочиться (последний раз было лениво уже, забил на это), то тогда открываю старенький OpenOffice3, для него существует экспортёр OOoFBTools.

Когда-то давно переводил Сократом (была такая прога для перевода), сейчас использую http://translate.google.com и https://translate.yandex.ru и сравниваю между собой, чего они выдают. Словарь https://www.multitran.com тоже в дело идёт, особенно, когда у какого-нибудь особо мерзкого слова по 50 значений оказывается (а так бывает практически во ВСЕХ нетривиальных случаях).

Цитировать
Вот с PDF у меня ваще всегда засада... не берусь за них, потому что не знаю как их привести в порядок для редактирования, обычно выходит какая-то  неудобоваримая каша при импорте в Open Office, Corel Draw или InkScape
Я когда-то пытался отдельными конверторами в вордовский формат преобразовывать, но обычно получался такой кошмар, что выкидывал результат. Просто стал из читалки копировать по одному абзацу, и работать с ним.
А с купленными или полученными по free-learning книжками издательства https://www.packtpub.com всё проще: они давали скачать не только в формате PDF, но и в EPUB, с ним гораздо удобнее работать.
Название: Re: CopperCube
Отправлено: Samovar от 19 Май 2019, 18:33:15
Ясно. Спасибо за инфу, Striver. Про  https://www.multitran.com не знал...

Кстати, прикол на счёт лицензий документации Блендера:
Расшифровка:

Дык что, если я когда-нибудь сподоблюсь перевести справку по BGE или Internal Renderer, то я естественно буду пользоваться вебархивом с лицензией СС0... иначе я задолбаюсь разбираться во всей этой чепухе и указывать какие я внёс изменения, постоянно ссылаясь внизу каждой страницы на исходники на английском и авторов с blender.org https://www.miranda-ng.org/hotcoffee/licenses/cc_by-nc-sa_4.0.html если хочу что бы всё было в рамках закона... хотя ГК РФ на это говорит иное... в России эти лицензии не работают...
Название: Re: CopperCube
Отправлено: Samovar от 19 Май 2019, 20:22:04
А вообще, как-то малёха стало мерзопакостно от всех этих "юризмов" на душе... Пока хрен с ними, хотя и приходится с ними сталкиваться...
Ехаем дальше потихоньку... надо доделать справку по CopperCube на русском...
Название: Re: CopperCube
Отправлено: Samovar от 19 Май 2019, 21:34:11
Цитировать
Чем больше я всякой фигни перевожу, тем чаще мне слово "basic" хочется перевести не как "основной" (или даже совсем тупо "базовый"), а как "примитивный". Этот случай кажется именно таким. (Не подумайте, что я имею что-то против языка программирования Бэйсик  :) ).
Бейсик - Бейсику рознь :) Если говорить о современных его диалектах, то на халявном Freebasic и коммерческом Purebasic, можно писать серьёзные проги и игры под Windows и Linux, которые ничуть не будут уступать аналогичным прогам на Cи и его диалектам Cи++ и т.д. Это компиляторы, которые генерят шустрый машинный код (и иногда он даже выходит шустрей, чем аналогичный Си и С++) , но проще и понятней для новичков, чем интерпретируемые Си-подобные языки, и прочая заточенная под  ООП интерпретируемая сценарная муть для сисадминов а-ля Python, JavaScript, LUA и т.д... Python с его требованиями к форматированию - это ваще какая-то чушь и детский сад "сопельки", если знаешь английский язык, который навязывает всем свой шаблон :)  Если говорить о вреде и пользе, то изучение новичками Python более вредно, чем изучение ими Basic, если они хотят развиваться дальше как программисты и шарить в машинном коде (то есть в ассемблере), и в том, как всё устроено в компах...

Если говорить о примитиве, то в логике "кирпичиков" BGE всё построено на булевой алгебре. Бальные транзисторы: сигнал (импульс) на входе и сигнал на выходе, есть или нет... но благодаря высокоуровневым ЯП с бешенной хренью ООП , прадигма которого - "тебе не стоит разбираться, как эта функция там внутри работает, просто пользуйся", многие не могут этой простоты понять :)
Название: Re: CopperCube
Отправлено: Striver от 19 Май 2019, 22:34:10
Цитировать
Python с его требованиями к форматированию - это ваще какая-то чушь и детский сад "сопельки", если знаешь английский язык, который навязывает всем свой шаблон :)  Если говорить о вреде и пользе, то изучение новичками Python более вредно, чем изучение ими Basic
Вот не хотелось бы скатиться до разборок у кого длиннее о языках про пользу, вредность и "сопельки". Я когда-то очень давно изучал Бэйсик (просто Бэйсик, без всяких Free, Pure, и тем более, ни дай б-г, Visual), ассемблер (для процессоров Z80 и 80286), Си, Си++. Конечно, никаким суперпрофи я в этих языках не стал, но представление о них имею достаточно чёткое. Сейчас мой выбор однозначно в пользу Python в подавляющем большинстве применений (в том числе мне сейчас за него зарплату платят), и D для случаев, когда скорости Питона недостаточно.

Цитировать
Если говорить о современных его диалектах, то на халявном Freebasic и коммерческом Purebasic, можно писать серьёзные проги и игры под Windows и Linux, которые ничуть не будут уступать аналогичным прогам на Cи и его диалектам Cи++ и т.д.
Это прекрасно, и у меня нет причин сомневаться в этом утверждении, но тоже самое можно сказать практически о любом языке, который существует более 10 (а иногда и меньше) лет (в том числе и о Питоне).
Название: Re: CopperCube
Отправлено: Samovar от 19 Май 2019, 22:47:08
Останусь при своём мнении... не спорю, что Python удобен, но и чем больше он удобен, тем больше он и вреден для новичков... Тебя естественно это не коснулось, потому что ты учился на других ЯП и знаешь все их плюсы и минусы, шаришь в том как всё устроено в компе...
Я ничего не знаю про язык D, но, вероятно, его не просто так обозвали "D", намекая на основные веяния в  развитие языков программирования: A-ассемблер, B-бейсик, C-Си... и теперь вот D :)
В общем, не трож Бейсик и я не буду тягать Питона за хвост... :) Питон пока не умеет шустрый код, а Бейсик уже давно может...
Название: Поддержка устройств виртуальной реальности
Отправлено: Striver от 19 Май 2019, 22:52:19
Что-то куда-то не в ту сторону в разговоре свернули... Возвращаемся.

Поддержка устройств виртуальной реальности

Цитировать
Обратите внимание, что при создании приложения с помощью этой функции вы несёте ответственность за возможный ущерб нанесённый людям вашим приложением.
Обратите внимание, что при создании приложения с помощью этой функции вы несёте ответственность за возможный ущерб, нанесённый людям вашим приложением.

Цитировать
Скорость очень важна, так как сцена визуализируется дважды, немного замедляя всё.
Скорость очень важна, так как сцена визуализируется дважды, отчего всё немного замедляется.
Название: Re: CopperCube
Отправлено: Samovar от 19 Май 2019, 23:03:36

Цитировать
Что-то куда-то не в ту сторону в разговоре свернули... Возвращаемся.
Хорошо. Молчу. Хватит лирических отступлений. Далее только по теме... Спасибо. Поправил.
Название: Обзор программирования сценариев (написания скриптов) в CopperCube
Отправлено: Striver от 19 Май 2019, 23:05:05
Обзор программирования сценариев (написания скриптов) в CopperCube

Цитировать
Если вы хотите быстро проверить код, который только что изменили при создании вашего действия или поведения, то используйте "Edit -> Plugins -> Reload and Verify Extensions" «Правка -> Дополнения -> Перезагрузить и проверить расширения», чтобы проверить, является ли ваше действие допустимым, и компилятор JavaScript принимает ваш код.
Если вы хотите быстро проверить код, который только что изменили при создании вашего действия или поведения, то используйте "Edit -> Plugins -> Reload and Verify Extensions" «Правка -> Дополнения -> Перезагрузить и проверить расширения», чтобы проверить, является ли ваше действие допустимым, и что компилятор JavaScript принимает ваш код.

Цитировать
При запуске приложения созданного под платформы Windows .exe или Mac OS X .app, в CopperCube будет отображаться окно отладки со всеми возникающими ошибками.
При запуске приложения, созданного под платформы Windows .exe или Mac OS X .app, в CopperCube будет отображаться окно отладки со всеми возникающими ошибками.

Цитировать
Загрузка расширений
Если вы не хотите изучать программирование, то вы можете загрузить расширения, созданные другими пользователями. Они доступны на официальном сайте:
Скачать сценарии поведений
Скачать сценарии действий
Теперь тебе придётся перевести ещё и эту страничку с описаниями расширений...  :)
Название: Re: CopperCube
Отправлено: Striver от 19 Май 2019, 23:10:00
Цитировать
В общем, не трож Бейсик и я не буду тягать Питона за хвост...
Так я ж с самого начала написал, что ничего против Бэйсика не имею.
Название: Re: CopperCube
Отправлено: Samovar от 19 Май 2019, 23:19:32
Цитировать
Теперь тебе придётся перевести ещё и эту страничку с описаниями расширений...  :)
Это в планах после завершения перевода основной справки... после того как переведу API, стану больше разбираться в программируемом функционале...


Допущу ещё одно лирическое отступление, по поводу инструментария для перевода, если кому-то это интересно. Я ничего не шарю в HTML, CSS, XML и прочем сайтострое. Потому пользуюсь бесплатным Microsoft Expression Web 4... до этого использовал Amaya, но она часто корявила разметку, почему-то...
Название: Платформа Windows (.exe)
Отправлено: Striver от 19 Май 2019, 23:43:30
Платформа Windows (.exe)

Цитировать
Ниже будет использовать файл сценария «myscript.js» вместо скомпилированного внутри приложения, и покажет консоль отладки, если какая-либо строка текста будет напечатана в вашем сценарии.
Следующая команда будет использовать файл сценария «myscript.js» вместо скомпилированного внутри приложения, и покажет консоль отладки, если какая-либо строка текста будет напечатана в вашем сценарии.

Цитировать
При публикации вашего файла с как приложения Windows .exe, CopperCube включит этот сценарий в файл .exe и будет использовать его в качестве основного сценария.
При публикации вашего файла как приложения Windows .exe, CopperCube включит этот сценарий в файл .exe и будет использовать его в качестве основного сценария.

Цитировать
Чтобы протестировать его и разрабатывать свою игру, сделайте следующее:
Чтобы протестировать эту интеграцию, и разрабатывать с ней свою игру, сделайте следующее:

Цитировать
Создайте в этом каталоге текстовый файл с именем «steam_appid.txt», добавив в качестве текстового контента ваш магазин в Steam.
Создайте в этом каталоге текстовый файл с именем «steam_appid.txt», добавив в качестве текстового контента ваш appid (идентификатор приложения) в магазине Steam.

Цитировать
Полноэкранный режим теперь будет автоматически изменятся в соответствии с разрешением экрана пользователя.
Полноэкранный режим теперь будет автоматически изменяться в соответствии с разрешением экрана пользователя.

Цитировать
Переключение между игрой и другими приложениями станут очень быстрым.
Переключение между игрой и другими приложениями станет очень быстрым.

Цитировать
Теперь можно перейти в полноэкранный режим, нажав на окне кнопку «Развернуть».
Можно переходить в полноэкранный режим, нажав у окна кнопку «Развернуть».

Цитировать
При публикации вашего приложения, CopperCube создаст папку с именем «dxredist», в паке где находится ваше приложение.
При публикации вашего приложения CopperCube создаст папку с именем «dxredist» там же, где находится ваше приложение.
Название: Re: CopperCube
Отправлено: Samovar от 20 Май 2019, 00:02:25
Премного благодарен! Исправил.
Название: Re: CopperCube
Отправлено: Samovar от 20 Май 2019, 03:05:45
Обзор встроенных поведений

CopperCube включает в себя несколько поведений, которые могут быть добавлены к любому трехмерному и двумерному объекту в сцене. Благодаря этому, возможно не только анимировать трехмерные объекты, но и добавить интерактивность вашему трехмерному приложению, такие как: реагирование на нажатия клавиш и кнопок, воспроизведение звуков или даже создание игровых персонажей, контролируемых искуственным ителлектом (AI).
Доступ к поведениям можно получить в окне свойств 'Properties' «Свойства» каждого объекта сцены на вкладке 'Behaviors' «Поведения»:

(https://www.ambiera.com/coppercube/doc/images/behaviorsoverview.png)


Ниже приведен список с кратким описанием встроенных типов поведений:


Наименование 
Описание

Fly in a circle
(Летать по кругу)   

Позволяет узлу сцены перемещаться по кругу. Поддерживаются следующие параметры:

Rotate
(Вращаться)   

Позволяет узлу сцены вращаться вокруг себя. Поддерживаются следующие параметры:

Fly along a line
(Летать вдоль линии)   

Заставляет узел сцены перемещаться по прямой линии. Поддерживаются следующие параметры:

Follow a path
(Следовать пути)   

Заставляет узел сцены следовать по трехмерной траектории, состоящей из нескольких узловых точек. Вы можете определить путь, просто создав объект пути в редакторе (используйте 'Edit -> Insert -> Create a path' «Правка -> Вставить -> Создать путь»). Следующие параметры поддерживаются этим поведением:

...

Примечание: Это одна из самых сложных частей, в плане терминологии, соответствующей поведениям объектов в CopperCube... и на этом построена вся его логика... и скорей всего, всё выше написанное будет достаточно радикально изменено не один раз, в плане терминологии, чтобы логика была более понятна...

Striver, был и есть у меня долгосрочный план, постепенно перевести внимание новичков CopperCube на Freebasic и Irrlicht... вероятно, от того я и вспылил на счёт Бейсика (БЭйсика, если угодно :) )... не всё так просто затевалось... я стараюсь, по возможности, объединять темы, которые я создал на форуме, в какое-то подобие целого, что бы инфа из них дополняла друг-друга... т.к. я больше знаком с ЯП Basic, то Freebasic у меня в приоритете... И я буду отстаивать свою позицию и виденье, также, как в случае рендереров Internal vs Cycles :)
Название: Обзор встроенных поведений
Отправлено: Striver от 20 Май 2019, 09:58:00
Обзор встроенных поведений

Цитировать
Благодаря этому, возможно не только анимировать трехмерные объекты, но и добавить интерактивность вашему трехмерному приложению, такие как: реагирование на нажатия клавиш и кнопок, воспроизведение звуков или даже создание игровых персонажей, контролируемых искуственным ителлектом (AI).
Благодаря этому возможно не только анимировать трехмерные объекты, но и добавить интерактивности вашему трехмерному приложению, например: реагирование на нажатия клавиш и кнопок, воспроизведение звуков или даже создание игровых персонажей, контролируемых искуственным ителлектом (AI).

Цитировать
3D-позиция определяющая положение начала линии.
3D-позиция, определяющая положение начала линии.

Цитировать
3D-позиция определяющая положение конца линии.
3D-позиция, определяющая положение конца линии.

Цитировать
Например, значение 10000, означает 10 секунд.
Например, значение 10000 означает 10 секунд.

Цитировать
Интервал времени в миллисекундах, в течение которого узлу трехмерной сцены нужно переместится по всей траектории.
Интервал времени в миллисекундах, в течение которого узлу трехмерной сцены нужно переместиться по всей траектории.

Цитировать
Когда установлен флажок LookIntoMovementDirection (Смотреть в направлении движения), это может быть использовано для дополнительного поворота, который используется для поворота узла сцены в правильном направлении вдоль пути.
Когда установлен флажок LookIntoMovementDirection (Смотреть в направлении движения), этот параметр можно использовать для дополнительного поворота, чтобы отрегулировать направление взгляда узла сцены вдоль пути.
Очень сильно перелопатил предложение, возможно, стало неверно. Лучше перепроверь за мной это место.
Название: Re: CopperCube
Отправлено: Samovar от 20 Май 2019, 19:46:37
Благодарю. Поправил.
Цитировать
Очень сильно перелопатил предложение, возможно, стало неверно. Лучше перепроверь за мной это место.
Потыкал эти параметры в редакторе, и нифига не заметил разницы... Пока оставил твой вариант.
Вообще, справка не полная... Позже выложу более полный вариант поведения Follow a path
Название: Re: CopperCube
Отправлено: Samovar от 21 Май 2019, 00:16:05
Striver, я перекурю несколько дней от перевода... малёха подзадолбался... нужен перерыв...


Касаемо того, аналоги каких знаменитых 3D-игр можно достаточно просто воплотить на СopperCube (конечно, не с супер-пупер графикой, но с такой же играбельностью).
Tomb Raider, Half-Life, Blade of Darkness, Silent Hill и т.п. в общем, аркады, шутеры и адвенчуры... стратегии и симуляторы - это слишком сложно.
Название: Re: CopperCube
Отправлено: Striver от 21 Май 2019, 00:37:06
Цитировать
Tomb Raider, ...
Лариска 2006-го года на этой картинке кажется симпатиШнее остальных  :)

Или всё-таки 2003-го?...
Название: Re: CopperCube
Отправлено: Samovar от 21 Май 2019, 00:44:10

Х.з. я гонял только в первые три :)  прошлого века...  Согласен, что 2006 лучше остальных в плане гармонии реалистичность-привлекательность (золотая середина и компромисс). Остальные впадают в крайности. А симпатичней Анжелина в фильме (хоть и  с сиськами на полэкрана ) , новомодная актриса мне не нравицо :) , хоть она и, как актриса, лучше... я привык к изначальному древнему образу жопасто-сисястой Лары Крофт :)  и именно с волосами сплетёнными в косу, а не собранными в хвостик...


(https://upload.wikimedia.org/wikipedia/ru/9/98/Lara_Croft_film.jpg)(https://www.kinopoisk.ru/images/film_big/446136.jpg)


Мода, мать её ... :)  ... и ребрендинг...

И да, уровень виза у CopperCube начала нулевых, увы... Скорей всего, это в основном обусловлено прошлой поддержкой Flash и нынешней WebGL.
Название: Re: CopperCube
Отправлено: Samovar от 22 Май 2019, 19:44:06
Если запечь карты освещения c помощью Блендера, то подобный виртуальный тур легко можно собрать и в CopperCube для WebGL, без особых заморочек... (+ объект типа "вода" для отражений в зеркалах). А вот с глянцевыми материалами придётся долго мутить, но тоже возможно, сделать нечто подобное, если кинуть шум на карту нормалей и запечь карту ложных отражений...либо как-то решить через GLSL шейдер программно, но это для меня через чур сложно...
Здесь использовался  Unreal 4 и, скорей всего, всё:  AO, и статические тени, рендерятся в режиме реального времени, сжирая производительность (можно сделать более оптимизировано и симпатично)
3D тур по 4x комнатной квартире. Визуализация интерьера.
https://youtu.be/Qftj9mDFzVc

И так же просто это всё делается в UPBGE
Название: Re: CopperCube
Отправлено: Samovar от 24 Май 2019, 19:31:45
...

Follow a path
(Следовать пути) 
Заставляет узел сцены следовать по трехмерной траектории, состоящей из нескольких узловых точек. Вы можете определить путь, просто создав объект пути в редакторе (используйте 'Edit -> Insert -> Create a path' «Правка -> Вставить -> Создать путь»). Следующие параметры поддерживаются этим поведением:...
Название: Re: CopperCube
Отправлено: Samovar от 25 Май 2019, 17:19:19
...
Collide When Moved
(Сталкиваться при перемещении)   
Это поведение позволяет перемещать трехмерные объекты в трехмерном мире не пропуская их сквозь стены. Просто прикрепите это поведение к активной камере, и при перемещении она не будет проходить сквозь стены, где «стены» - это трехмерные объекты, у которых в окне их свойств установлен атрибут Collision «Сталкиваться». Смотрите Столкновение для получения дополнительной информации.
Поддерживаются следующие параметры:
При использовании этого поведения во время перемещения объекта иногда возможно его  застревание в геометрии. Для предотвращения застревания, всегда размещайте 3D-объект в таком положении, чтобы вначале желтый эллипсоид не сталкивался со стенами. Если 3D-объект застревает во время движения, проблема может заключаться в полигональной 3D-сетке мира: нужно быть внимательным и осторожным при моделировании статической геометрии, с которой должен сталкиваться 3D-объект. Геометрия всегда должна быть замкнутой, и нигде не должно быть торчащих односторонних треугольников,  обычно в этих местах и происходит застревание.
Кроме того, если вершины, которые должны быть расположены вместе, находятся не совсем в одной точке, это может вызвать проблемы. Если используемое программное обеспечение для трехмерного моделирования поддерживает функцию слияния вершин, то рекомендуется сделать это. Обычно это помогает.
Кроме того, вы можете использовать переменную  colSmallDistance для изменения 'small distance' «малого расстояния», чтобы регулировать минимальное расстояние определения столкновений в вашей системе.

...
Название: Re: CopperCube
Отправлено: Samovar от 25 Май 2019, 20:30:22
...
Model Viewer Camera Style Controlled
(Контроллер камеры в стиле обзора модели)   
Данное поведение можно использовать только совместно с камерами. Камера, к которой подключено это поведение, ведет себя как средство обзора 3D-модели. Она может вращаться пользователем вокруг цели камеры путём перемещения мыши.
Поддерживаются следующие параметры:
...
Название: Re: CopperCube
Отправлено: Samovar от 26 Май 2019, 17:49:02
...
First Person Shooter Style Controlled
(Контроллер камеры в стиле шутера от первого лица)   
Данное поведение можно использовать только совместно с камерами. Камера,  к которой подключено это поведение, ведет себя как камера в шутере от первого лица. Она может вращаться пользователем путём перемещения мыши и перемещаться путём нажатия им клавиш на клавиатуре.
Поддерживаются следующие параметры:
...
Название: Re: CopperCube
Отправлено: Samovar от 26 Май 2019, 18:39:42
...
3rd Person Camera Style controlled
(Контроллер камеры в стиле от третьего лица)   
Данное поведение можно использовать только совместно с камерами. Оно заставляет камеру следовать за объектом. Например, когда это поведение связано с объектом, который имеет поведение "Object or Person controlled by keyboard" (Объект или персонаж контролируемый клавиатурой), вы можете создать камеру, похожую на игры с камерой от третьего лица, такие как "Tomb Raider".
Поддерживаются следующие параметры:
...
Название: Re: CopperCube
Отправлено: Samovar от 26 Май 2019, 20:12:19
...
When Clicked do something
(При нажатии сделать что-либо)   
Запускает определяемое пользователем действие, когда пользователь кликает мышью трехмерный объект, к которому привязано это поведение.
Поддерживаются следующие параметры:
When Cursor Moved Over do something
(При наведении указателя мыши сделать что-либо)   
Запускает определяемое пользователем действие, когда пользователь наводит указатель мыши на трехмерный объект, к которому привязано это поведение.
Поддерживаются следующие параметры:
...
Название: Re: CopperCube
Отправлено: Samovar от 27 Май 2019, 12:25:54
...
On proximity do something
(При приближении сделать что-либо)   
Запускает определяемое пользователем действие, когда активная камера или другой 3D-объект перемещается близко к 3D-объекту, к которому привязано это поведение.
Поддерживаются следующие параметры:
Every few seconds do something
(Каждые несколько секунд делать что-либо)   
Поведение которое выполняет действие через определенный интервал времени. Также подобное поведение часто называется таймером.
Поддерживаются следующие параметры:
Animate a texture
(Анимация текстуры)   
Изменяет текстуру трехмерного объекта, к которому привязано это поведение.
Поддерживаются следующие параметры:
...
Название: Re: CopperCube
Отправлено: Striver от 28 Май 2019, 09:12:19
Follow a path
Цитировать
Делает камеру активной, которую можно выбрать в дополнительном параметре Camera (Камера).
Делает активной определённую камеру, которую можно выбрать в дополнительном параметре Camera (Камера).


Collide When Moved
Цитировать
Это поведение позволяет перемещать трехмерные объекты в трехмерном мире не пропуская их сквозь стены.
Это поведение позволяет перемещать трехмерные объекты в трехмерном мире, не пропуская их сквозь стены.

Цитировать
Полезно, если вы используете столкновения для объектов имитирующих транспортные средства.
Полезно, если вы используете столкновения для объектов, имитирующих транспортные средства.

Цитировать
Для предотвращения застревания, всегда размещайте 3D-объект в таком положении, чтобы вначале желтый эллипсоид не сталкивался со стенами.
Для предотвращения застревания всегда размещайте 3D-объект в таком положении, чтобы желтый эллипсоид изначально не сталкивался со стенами.

Цитировать
Если используемое программное обеспечение для трехмерного моделирования поддерживает функцию слияния вершин, то рекомендуется сделать это.
Если используемое программное обеспечение для трехмерного моделирования поддерживает функцию слияния вершин, то рекомендуется её выполнить.


Model Viewer Camera Style Controlled
Цитировать
Она может вращаться пользователем вокруг цели камеры путём перемещения мыши.
Пользователь может вращать камеру вокруг цели посредством движения мыши.


First Person Shooter Style Controlled
Цитировать
Она может вращаться пользователем путём перемещения мыши и перемещаться путём нажатия им клавиш на клавиатуре.
Пользователь может вращать камеру посредством движения мыши и передвигать с помощью нажатия клавиш на клавиатуре.

Цитировать
Скорость с которой камера поворачивается при перемещении мыши.
Скорость, с которой камера поворачивается при перемещении мыши.

Цитировать
Максимальный угол на который камера может смотреть вверх и вниз.
Максимальный угол, на который камера может смотреть вверх и вниз.

Цитировать
Если этот параметр активирован, то это не позволяет камере внезапно останавливаться при перемещении, когда пользователь отпустит клавишу перемещения.
Если этот параметр активирован, то он не позволит камере внезапно останавливаться при перемещении, когда пользователь отпустит клавишу перемещения.

Цитировать
Этот параметр видно только если у вас есть 3D-модели, прикрепленные к камере как потомки.
Этот параметр видно только в том случае, если у вас есть 3D-модели, прикрепленные к камере как потомки.
Название: Re: CopperCube
Отправлено: Striver от 28 Май 2019, 09:39:09
3rd Person Camera Style controlled
Цитировать
Например, когда это поведение связано с объектом, который имеет поведение "Object or Person controlled by keyboard" (Объект или персонаж контролируемый клавиатурой), вы можете создать камеру, похожую на игры с камерой от третьего лица, такие как "Tomb Raider".
Например, когда это поведение связано с объектом, который имеет поведение "Object or Person controlled by keyboard" (Объект или персонаж контролируемый клавиатурой), вы можете создать камеру, аналогичную тем, что используются в играх с видом от третьего лица, таких как "Tomb Raider".

Цитировать
Дополнительная высота добавляемая к цели камеры.
Дополнительная высота, добавляемая к цели камеры.


When Clicked do something
Цитировать
При клике мышью по трехмерному объекту, вместо проверки каждого многоугольника трехмерной модели, выполняется проверка столкновения только с его габаритным контейнером,.
При клике мышью по трехмерному объекту, вместо проверки каждого многоугольника трехмерной модели будут проверены столкновения только с его габаритным контейнером.

Цитировать
Если этот флажок установлен (по умолчанию), то когда 3D-объект находится за геометрией другого 3D-объекта и пользователь кликает по нему, то ничего не происходит.
Если этот флажок установлен (и по-умолчанию это так), то когда 3D-объект находится за геометрией другого 3D-объекта, а пользователь кликает по нему, то ничего не происходит.

Цитировать
Когда курсор перемещается над трехмерным объектом, вместо проверки каждого многоугольника трехмерной модели, выполняется проверка столкновения только с его габаритным контейнером,.
Когда курсор перемещается над трехмерным объектом, вместо проверки каждого многоугольника трехмерной модели выполняется проверка столкновения только с его габаритным контейнером.

Цитировать
Если этот флажок установлен (по умолчанию), то когда 3D-объект находится за геометрией другого 3D-объекта и пользователь наводит курсор на него, то ничего не происходит.
Если этот флажок установлен (и по-умолчанию это так), то когда 3D-объект находится за геометрией другого 3D-объекта, а пользователь наводит курсор на него, то ничего не происходит.


On proximity do something
Цитировать
Определяет для чего должен проводится тест: для текущей активной (The current active camera) камеры или другого узла сцены (A scene node).
Определяет, для чего должен проводится тест: для текущей активной (The current active camera) камеры или другого узла сцены (A scene node).


Every few seconds do something
Цитировать
Поведение которое выполняет действие через определенный интервал времени.
Поведение, которое выполняет действие через определенный интервал времени.


Animate a texture
Цитировать
Здесь вы можете указать, будут ли изменены все текстуры 3D-объекта или только материал с определенным индексом (Material Index to change).
Здесь вы можете указать, требуется ли изменить все текстуры 3D-объекта или только материал с определенным индексом (Material Index to change).

Цитировать
Текстура которая заменит предыдущую текстуру объекта через интервал времени.
Текстура, которая заменит предыдущую текстуру объекта через интервал времени.
Название: Re: CopperCube
Отправлено: Samovar от 28 Май 2019, 20:16:42
Спасибо, Striver. Поправил.
Название: Re: CopperCube
Отправлено: Samovar от 29 Май 2019, 00:13:23
...
Game Actor with Health
(Игровой актёр со здоровьем)   
Позволяет создавать контролируемых внутриигровых актёров, таких как монстры, солдаты и т.д., которые перемещаются в окружающей среде. Игровой актёр может патрулировать определенную область и атаковать определенные цели. У него есть некоторое количество здоровья и он может погибнуть, когда его здоровье достигнет нуля. Это может быть достигнуто, например, с помощью действия 'Shoot' «Выстрел». Данное поведение довольно полезно для создания прототипов игр.
Предполагается, что данное поведение будет использоваться с анимированными  полигональными моделями, но, конечно, оно работает и с другими узлами сцены.
Поддерживаются следующие параметры:
 
Для быстрого доступа к здоровью игрового актёра доступны специальные переменные. Например, используйте переменную с именем #player1.health для получения или изменения значения переменной хранящей здоровье объекта сцены с именем  'player1'. Это полезно в сочетании с действием  Set or change a Variable (Установить или изменить переменную).
Кроме того, имеется функция ccbAICommand(), с помощью которой вы можете отправлять команды игровому актёру.

...
Название: Re: CopperCube
Отправлено: Samovar от 29 Май 2019, 16:48:32
...
Object or Person controlled by keyboard
(Объект или персонаж контролируемый клавиатурой)   
Поведение, которое позволяет управлять трехмерным объектом с помощью ввода с клавиатуры, а также запускать анимацию, если это необходимо. В сочетании с камерой от третьего лица можно создавать актеров, управляемых, как в играх типа "Tomb Raider".
Поддерживаются следующие параметры:
...
Название: Re: CopperCube
Отправлено: Samovar от 29 Май 2019, 18:27:51
...
When a key is pressed do something
(При нажатии клавиши сделать что-либо)   
Позволяет реагировать на нажатия клавиш клавиатуры или мыши. Кроме того, на платформе Android, можно реагировать на нажатие кнопки меню, выбрав "App Menu key" (Кнопка меню).
Поддерживаются следующие параметры:
Object moved by physics engine
(Объект перемещается физическим движком)   
Поведение, которое перемещает объект на базе физической симуляции. Когда объекты с таким поведением сталкиваются, то они влияют друг на друга. Кроме того, объекты с поведением Collide when moved (Столкновение при перемещении) также будут сталкиваться с ними и смогут их перемещать, разворачивать и т.д.
Обратите внимание, что это поведение работает только для целевых платформ при включенном физическом движке (это можно сделать в диалоговом окне  Publishing Settings «Параметры публикации»). Работает только в Windows .exe и Mac OS X .app.
Поддерживаются следующие параметры:
Before first drawing do something
(Перед первой отрисовкой сделать что-либо)   
Данное поведение может быть добавлено только к корневому узлу сцены. Все действия добавленные к нему выполняются один раз при запуске сцены. Его можно использовать для инициализации переменных, изменения положения объектов и т.п.
Поддерживаются следующие параметры:
Если вам нужно больше поведений, то вы можете скачать их с официального сайта или даже создать свои собственные.
Название: Re: CopperCube
Отправлено: Samovar от 30 Май 2019, 16:38:32
Обзор встроенных действий

CopperCube включает в себя встроенные действия, которые могут быть вызваны поведениями и другими действиями. Благодаря этому возможно не только анимировать трехмерные объекты, но и добавить интерактивности вашему трехмерному приложению, например: реагирование на нажатия клавиш и кнопок, воспроизведение звуков или даже создание игровых персонажей, контролируемых искусственным интеллектом (AI).
Доступ к действиям (Action) можно получить через добавление поведения в окне свойств 'Properties' «Свойства» каждого объекта сцены на вкладке 'Behaviors' «Поведения»:

(https://www.ambiera.com/coppercube/doc/images/behaviorsoverview.png) (https://www.ambiera.com/coppercube/doc/images/actionslot.png)


Чтобы создать действие, выберите, например, поведение  When Clicked do something (При нажатии сделать что-либо), а затем нажмите кнопку <...> в его свойстве  Action (Действие).
Появится окно, где вы можете создать новое действие, чтобы указать, что должно произойти. Ниже приведен список с кратким описанием всех доступных типов действий:

Имя
Описание

...
Название: Re: CopperCube
Отправлено: Samovar от 30 Май 2019, 19:56:49
Тут много отсебятины, т.к. оригинальная справка неполная.

...
Hide or Unhide a Scene node
(Скрыть или отобразить узел сцены)   
Делает узел 3D-сцены видимым или невидимым.
Поддерживаются следующие параметры:
Change Position of a Scene node
(Изменить позицию узла сцены)   
Позволяет узлу 3D-сцены сцены изменить своё положение. Благодаря настройкам, можно установить новое фиксированное трёхмерное  положение или относительное положение. Кроме того, это можно сделать за короткий промежуток времени или анимированно.
Поддерживаются следующие параметры:
Change Rotation of a Scene node
(Изменить вращение узла сцены)   
Позволяет узлу трехмерной сцены изменить своё вращение. Благодаря настройкам, можно установить новое фиксированное трехмерное вращение или повернуть его относительно текущего вращения узла.
Поддерживаются следующие параметры:
Change Scale of a Scene node
(Изменить масштаб узла сцены)   
Позволяет узлу трехмерной сцены изменять свой масштаб. Благодаря настройкам, можно установить новый фиксированный масштаб или  изменить его относительно текущего масштаба.
Поддерживаются следующие параметры:
Change a texture
(Изменить текстуру)   
Это действие позволяет установить новую текстуру для узла сцены.
Поддерживаются следующие параметры:
...
Название: Re: CopperCube
Отправлено: Striver от 31 Май 2019, 10:02:38
Game Actor with Health
Цитировать
Это может быть достигнуто, например, с помощью действия 'Shoot' «Выстрел».
Этого можно добиться, например, с помощью действия 'Shoot' «Выстрел».

Цитировать
Если поведение прикреплено к анимированной модели, то это указывает анимацию, воспроизводимую при ...
Если поведение прикреплено к анимированной модели, то этот параметр определяет анимацию, воспроизводимую при ...
для StandAnimation, WalkAnimation, DieAnimation, AttackAnimation, тоже самое в поведении Object or Person controlled by keyboard

Цитировать
Например, используйте переменную с именем #player1.health для получения или изменения значения переменной хранящей здоровье объекта сцены с именем  'player1'.
Например, используйте переменную с именем #player1.health для получения или изменения значения переменной, хранящей здоровье объекта сцены с именем  'player1'.


Object or Person controlled by keyboard
Цитировать
Установите замедление равным нулю, если вы хотите, чтобы объект мог сразу остановиться как вкопанный.
Установите замедление равным нулю, если вы хотите, чтобы объект мог остановиться сразу, как вкопанный.


When a key is pressed do something
Цитировать
Кроме того, на платформе Android, можно реагировать на нажатие кнопки меню, выбрав "App Menu key" (Кнопка меню).
Кроме того, на платформе Android можно реагировать на нажатие кнопки меню, выбрав "App Menu key" (Кнопка меню).
(блин, в моём предыдущем телефоне у меня была такая кнопка, но управляющие Миром рептилоиды всё время стараются всё ухудшить, в нынешних моделях всех производителей такой кнопки давно нет)

Цитировать
Выберете клавишу на событие которой необходимо отреагировать.
Выберите клавишу, на событие которой необходимо отреагировать.


Object moved by physics engine
Цитировать
Обратите внимание, что это поведение работает только для целевых платформ при включенном физическом движке (это можно сделать в диалоговом окне  Publishing Settings «Параметры публикации»).
Обратите внимание, что это поведение работает только на целевых платформах со включенным физическим движком (это можно сделать в диалоговом окне  Publishing Settings «Параметры публикации»).

Цитировать
Плотность объекта совместно с размером тела определяют насколько тяжел или лёгок объект.
Плотность объекта совместно с размером тела определяют, насколько тяжел или лёгок объект.


Before first drawing do something
Цитировать
Все действия добавленные к нему выполняются один раз при запуске сцены.
Все действия, добавленные к нему, выполняются один раз при запуске сцены.

Цитировать
Действие, которое будет выполнятся один раз при старте сцены.
Действие, которое будет выполняться один раз при старте сцены.
Название: Обзор встроенных действий
Отправлено: Striver от 31 Май 2019, 10:21:49
Hide or Unhide a Scene node
Цитировать
Выберете текущий узел сцены <the current scene node> или любой другой <select>.
Выберите текущий узел сцены <the current scene node> или любой другой <select>.
Тоже самое в действиях Change Position of a Scene node, Change Rotation of a Scene node, Change Scale of a Scene node, Change a texture


Change Position of a Scene node
Цитировать
Позволяет узлу 3D-сцены сцены изменить своё положение.
Позволяет узлу 3D-сцены изменить своё положение.

Цитировать
Если установлен флажок, то перемещение объекта в заданную позицию происходит в течении времени указанного в Time to move (ms) (Время перемещения в миллисекундах).
Если установлен флажок, то перемещение объекта в заданную позицию происходит в течении времени, указанного в Time to move (ms) (Время перемещения в миллисекундах).


Change a texture
Цитировать
Здесь вы можете указать, требуется ли изменить все текстуры 3D-объекта (Change all textures) или только материал с определенным индексом (Change material with index), указанный в параметре Material Index (Индекс материала).
Здесь вы можете указать, требуется ли изменить все текстуры 3D-объекта (Change all textures), или только материал с определенным индексом (Change material with index), указанный в параметре Material Index (Индекс материала).
Название: Re: CopperCube
Отправлено: Samovar от 31 Май 2019, 15:43:05
Одын башка - харашо, а два башка - лучший :)
Благодарю, Striver. Поправил. Ехаем дальше потихоньку, помаленьку...
Название: Re: CopperCube
Отправлено: Samovar от 31 Май 2019, 16:56:24
Цитировать
(блин, в моём предыдущем телефоне у меня была такая кнопка, но управляющие Миром рептилоиды всё время стараются всё ухудшить, в нынешних моделях всех производителей такой кнопки давно нет)
А ты на каком движке свою игру для Andriod делал, ежели не секрет?

Если не сложно, проверь этот перевод, пожалуйста.
Название: Re: CopperCube
Отправлено: Striver от 31 Май 2019, 17:09:00
Цитировать
А ты на каком движке свою игру для Andriod делал, ежели не секрет?
Нет там никакого движка, голые Ява и OpenGL.
Название: Re: CopperCube
Отправлено: Samovar от 31 Май 2019, 17:51:22
Ясно.
Название: Change Rotation of a Scene node
Отправлено: Striver от 31 Май 2019, 22:13:42
По поводу Change Rotation of a Scene node
Я когда утром делал вычитку, мне показалось, что "что-то тут нет так"... Но решил подождать до вечера, и разобраться. Сейчас пришёл домой, запустил , и оказалось, что "действительно, ВСЁ не так".

Во-первых, там, где ты применяешь слово "вращение", нужно применять слово "поворот". Оно мне ещё утром показалось уместнее, а сейчас я и в русском интерфейсе его же увидел.

Но это фигня, перевод поправить несложно.

Главная проблема в том, что это тупорыло-бесполезное действие. О чём вообще, нахрен, думали разработчики, когда добавляли его? Ну хорошо, они попытались скрыть от пользователей страшное и непонятное слово "кватернион", но почему они не дали адекватную альтернативу? В параметрах есть вектор поворота, но, блин, нету угла!!!!!!!!!!!
Я сейчас попробовал это действие... Ну, они поворачивают объект на маленький угол, скорее всего, на один градус. ПОЧЕМУ нельзя было ввести этот угол параметром?

И, да... Если у них до сих пор никто из пользователей не спросил "Где мой угол поворота?", значит, никто фактически этот CopperCube не использует.
Название: Re: CopperCube
Отправлено: Samovar от 31 Май 2019, 22:25:38
Хорошо, поправлю...  "вращение" на "поворот". Русский интерфейс переведён очень давно, местами криво и многого не хватает... но я согласен, что терминологию надо уточнять...
х.з. там под вектором, видимо понимаются углы Эйлера по X,Y,Z  в гадусах... У меня всё работает...
Не знаю, используют или нет, этот движок... на сайте есть ссылки на инди-игры... конечно, они не супер-пупер...
...перевод закончу в любом случае...
Название: Re: CopperCube
Отправлено: Striver от 31 Май 2019, 22:36:29
Цитировать
х.з. там под вектором, видимо понимаются углы Эйлера по X,Y,Z  в гадусах... У меня всё работает...
Действительно, попробовал менять длину вектора - меняется угол. Пожалуй, часть своих слов возьму назад. Но, полная хрень, конечно, называть это "вектором"... Наверное, лучше как-то разъяснить, что это за "вектор" на самом деле.
Название: Re: CopperCube
Отправлено: Samovar от 31 Май 2019, 22:56:12
Поправил:

Change Rotation of a Scene node
(Изменить поворот узла сцены)
Позволяет узлу трехмерной сцены изменить свой поворот. Благодаря настройкам, можно установить новый  фиксированный поворот узла или повернуть его относительно текущего поворота.
Поддерживаются следующие параметры:
Set rotation type (Установить тип поворота): Определяет тип поворота. Поддерживаются следующие типы:
- Set absolute rotation (Повернуть абсолютно): Поворачивает узел на абсолютные углы.
- Rotate by rotation (Повернуть относительно): Поворачивает узел на углы относительно текущего поворота.
Change which Scene Node (Узел сцены): Определяет, какой узел сцены надо повернуть. Выберите текущий узел сцены <the current scene node> или любой другой <select>.
Vector (Поворот в градусах): Поворот узла по осям X, Y, Z  на угол в градусах.
Rotate Animated (Вращать анимированно): Если установлен флажок, то вращение узла происходит в течении времени указанного в Time to rotate (ms) (Время вращения в миллисекундах). Иначе вращение происходит мгновенно.
Time to rotate (ms) (Время вращения в миллисекундах): Соответственно, время вращения узла сцены, заданное в миллисекундах.

Этого нет в документации. Твой вариант?
Название: Re: CopperCube
Отправлено: Striver от 31 Май 2019, 23:27:19
Цитировать
Set absolute rotation (Повернуть абсолютно): Поворачивает узел на абсолютные углы.
Set absolute rotation (Абсолютный поворот): Поворачивает узел в заданную ориентацию.

Цитировать
Rotate by rotation (Повернуть относительно): Поворачивает узел на углы относительно текущего поворота.
Rotate by rotation (Повернуть относительно): Поворачивает узел относительно текущей ориентации.

Цитировать
Поворот узла по осям X, Y, Z  на угол в градусах.
Поворот узла по осям X, Y, Z  на заданный угол в градусах.

Цитировать
Если установлен флажок, то вращение происходит в течении времени указанного в Time to rotate (ms) (Время вращения в миллисекундах).
Если установлен флажок, то вращение происходит в течение времени, указанного в Time to rotate (ms) (Время вращения в миллисекундах).
Название: Re: CopperCube
Отправлено: Samovar от 31 Май 2019, 23:38:27
Да, твой вариант более приемлем. Благодарю, отредактировал.
Название: Re: CopperCube
Отправлено: Samovar от 03 Июнь 2019, 22:35:11
...
Set animation of animated scene node
(Установить анимацию анимированного узла сцены)   
Позволяет изменить текущую анимацию анимированного узла на другую. Для этого вы можете уточнить названия всех анимации в редакторе анимации.
Поддерживаются следующие параметры:


Change active Camera
(Сменить активную камеру)   
Устанавливает активную камеру для рендеринга сцены.
Поддерживаются следующие параметры:


Set Camera Target
(Установить цель камеры)   
Изменяет положение цели камеры. Можно задать фиксированное положение или положение относительно узла сцены. Кроме того, это можно сделать мгновенно или анимированно в течении промежутка времени.
Поддерживаются следующие параметры:


Switch to another scene
(Переключиться на другую сцену)   
Переключает игру на другую сцену. При этом положение и состояние узлов и переменных текущей сцены сохраняется. Полезно для создания паузы в игре и игровых меню.
Поддерживаются следующие параметры:


Restart a scene
(Перезапустить сцену)   
Перезапускает сцену. Это означает, что действие сбрасывает все объекты, текстуры и поведения в их изначальные состояния, какими они были при первом запуске сцены. Данное действие полезно для создания уровней игры. Обратите внимание, что если вы используете это действие, то все действия добавленные ниже этого действия, не будут иметь никакого эффекта, так как эта сцена будет перезагружена.
Поддерживаются следующие параметры:
...
Название: Re: CopperCube
Отправлено: Striver от 04 Июнь 2019, 12:01:48
Set animation of animated scene node
Цитировать
Для этого вы можете уточнить названия всех анимации в редакторе анимации.
Как минимум, надо 8-е слово поправить:
Для этого вы можете уточнить названия всех анимаций в редакторе анимации.
Но, по хорошему, надо переделать всё предложение. Само по-себе оно для человека, читающего справку, непонятно. Что значит "уточнить"? Правильнее будет заменить на слово "указать", но понятнее не становится. Я некоторое время сличал этот раздел с разделом Скелетная анимация персонажа (перевод от 17 мая), и, как мне кажется, догадался, о чём речь, но должен ли так делать каждый, кто читает справку?


Set Camera Target
Цитировать
Кроме того, это можно сделать мгновенно или анимированно в течении промежутка времени.
Кроме того, это можно сделать мгновенно или анимированно в течение заданного промежутка времени.


Restart a scene
Цитировать
Обратите внимание, что если вы используете это действие, то все действия добавленные ниже этого действия, не будут иметь никакого эффекта, так как эта сцена будет перезагружена.
Обратите внимание, что если вы используете это действие, то все действия, добавленные ниже этого действия, не будут иметь никакого эффекта, так как эта сцена будет перезагружена.
Название: Re: CopperCube
Отправлено: Samovar от 08 Июнь 2019, 05:54:26
Благодарю. Поправил.
Название: Распродажа в стиме
Отправлено: Striver от 27 Июнь 2019, 10:39:00
В Стиме началась распродажа, и сегодня CopperCube 6 Professional стоит 580 рублей. Если покупать совместно с CopperCube 5 Professional, то это будет стоить 1059 рублей. Я пока раздумываю, но скорее всего куплю.
Название: Re: CopperCube
Отправлено: Samovar от 29 Июнь 2019, 21:08:27
Прикольно! На днях куплю 6-ую версию. 580 ₽ - это, считай, даром. :)
Blend4web и Verge, круче, конечно, но не создают такой компактный код, как CopperCube, и их PRO версии стоят  ₽ 60000  и ₽ 34900, соответственно.

Кому интересно поковыряться в исходниках 3D-стрелялки для Web на CopperCube, то один добрый дядька выложил их здесь:
Coppercube-fps-rts-example
Название: Re: Распродажа в стиме
Отправлено: LanuHum от 30 Июнь 2019, 21:56:33
В Стиме началась распродажа, и сегодня CopperCube 6 Professional стоит 580 рублей. Если покупать совместно с CopperCube 5 Professional, то это будет стоить 1059 рублей. Я пока раздумываю, но скорее всего куплю.
Я бы не раздумывая купил, если бы знал, что с ним делать.  ;D
Реально. В поэзию несёт, в прозу ироническую, а про игры мне тёмный лес. Комический симулятор, может бы, осилил, но войны, стрелялки...даже приблизительно на ум сценарий игры не ложится. Вот что значит "Не убий"
Название: Re: CopperCube
Отправлено: Samovar от 30 Июнь 2019, 22:15:37
Разный интекрактив можно делать, Ланухумыч. От вот таких интерактивных 3D-клипов https://www.with.in/watch/under-neon-lights/ вебсайтов и презентаций, до игр.
Название: Re: CopperCube
Отправлено: Samovar от 30 Июнь 2019, 22:36:59

Shoot
(Выстрел)   
Это действие обычно используется совместно с поведением «Игровой актёр» (Game Actor with Health), при стрельбе игрового актёра по другому объекту. Можно указать 3D-объект, который будет использован в качестве bullet (пули) для выстрела, или вообще не использовать пуль.
Кроме того, можно указать узел из которого должен быть произведён выстрел. Обычно, можно оставить настройки по-умолчанию: текущую активную камеру или игрового актёра, и всё должно работать правильно. Но при указании конкретного узла, из которого должен производиться выстрел, имеется два режима: выстрел в лицевом направлении этого узла (плюс дополнительное вращение) или выстрел в направлении, которое указывает активная камера, прикреплённая к этому узлу. Это полезно для создания шутеров от третьего лица.
Свойство ShootPositionDisplacement (Смещение позиции выстрела) позволяет вам указать точное положение относительно центра полигональной сетки 3D-модели, откуда должен быть произведён выстрел.
Поддерживаются следующие параметры:


Play a sound
(Воспроизвести звук)   
Воспроизводит 2D или 3D-звук.
Поддерживаются следующие параметры:


Stop a sound
(Остановить звук)   
Останавливает определенный звук, который был запущен функцией Play a sound (Воспроизвести звук).
Поддерживаются следующие параметры:


Stop all sounds
(Остановить все звуки)   Останавливает все воспроизводимые в данный момент звуки.


Restart behaviors of a scene node
(Перезапустить поведения узла сцены)   
Перезапускает поведение узла сцены. Например, может использоваться для перезапуска анимации текстуры узла сцены. Работает только с определенным поведением, таким как поведение Animate a texture (Анимиацмя текстуры).
Поддерживаются следующие параметры:


Clone a scene node
(Клонировать узел сцены)   
Создает копию существующего узла сцены. Например, чтобы динамически создавать врагов для игрока, вы можете создать невидимый вражеский объект и использовать его в качестве шаблона для создания нескольких его копий в случайных позициях во время игры. Другой пример: вы можете создать копии предварительно созданной невидимой системы частиц для демонстрации взрывов при попадании пули в определенный объект или стену.
Действие так же дает возможность мгновенно выполнить другие действия над созданным клоном. Например, вы можете использовать эту возможность для мгновенного перемещения клона в другую позицию. Для этого используйте <the current scene node> (Текущий узел сцены) в качестве узла в дополнительном действии перемещения.


Обратите внимание, что если исходный узел сцены имеет в своих действиях и поведениях ссылки на самого себя, то ссылки в действиях и поведениях клона будут изменены ссылками на клон.
Поддерживаются следующие параметры:


Delete a scene node
(Удалить узел сцены)   
Удаляет объект из сцены навсегда.
Поддерживаются следующие параметры:
Название: Re: CopperCube
Отправлено: Striver от 01 Июль 2019, 18:24:34
Samovar, некоторое время не смогу тебе помогать с переводом, нахожусь в отпуске без доступа к компу.
Название: Re: CopperCube
Отправлено: Samovar от 01 Июль 2019, 18:28:48
Цитировать
Samovar, некоторое время не смогу тебе помогать с переводом, нахожусь в отпуске без доступа к компу.
Понял. Ничего страшного. Приятного отдыха! Потом поправлю, когда сможешь указать на ошибки.

Change 2D Overlay Text
(Изменить текст 2D-наложения)   
Устанавливает текст 2D-наложения. При желании, можно также напечатать значения переменных с помощью вставки имени переменной, окруженной символом "$". Например, чтобы отобразить текст переменной с именем "score" после произвольного текста в 2D-наложении, напишите в поле значения Value этот текст без кавычек: "Ваши очки: $score$". Для отображения здоровья игрового актёра используйте, например, "Здоровье: $#player1.health$", где "player1" - это имя объекта игрового актёра со здоровьем. Смотрите раздел Специальные переменные.
Поддерживаются следующие параметры:


Set or change a Variable
(Создать или изменить переменную)   
Устанавливает или изменяет значение глобальной переменной. Переменные могут быть использованы для повышения интерактивности вашего приложения. Они могут быть числовыми значениями или строковыми (текстовыми) и влиять на работу вашего приложения. Например, с помощью действия If variable has a value do something (Если переменная имеет значение, то сделать что либо), либо могут выводиться на экран с помощью действия Change 2D Overlay Text (Изменить текст 2D-наложения).
Поддерживаются следующие параметры:
Также доступны специальные переменные для быстрого доступа к данным в текущей сцене. Имена этих переменных выглядят так: #имя.атрибут. Используйте, например, #player1.health для получения или изменения переменной, хранящей здоровье объекта, в поведении игрового актёра узла сцены с именем 'player1'. Смотрите раздел Специальные переменные.


If a variable has a value do something
(Если переменная имеет значение, то сделать что либо)   
Условное действие. Выполняет заданное действие, если переменная имеет определенное значение. Доступны операторы: Is equal to (=) (Равно), Is not equal to (<>) (Не равно), Is biiger than (>) (Больше чем) и Is smaller than (<) (Меньше чем). В поле ValueType (Тип значения) может быть задан тип Value (Значение) или Variable (Переменная). Если установлен тип Value (Значение), то текст, введенный в поле ниже Value (Значение), должен представлять собой значение, например 1. Затем это число будет использоваться для сравнения вашей переменной. Если установлено значение Variable (Переменная), то текст в поле ниже Value (Значение) должен содержать имя другой переменной, которая затем будет использоваться для сравнения вашей переменной. Поле Action (Действие) будет выполнено только тогда, когда сравнение истинно.
Поддерживаются следующие параметры:


Load or Store a Variable
(Загрузить или сохранить переменную)   
Сохраняет или загружает содержимое переменной на диск или с него. Таким образом, можно создавать простые «savegames» для приложений CopperCube. Это работает для всех целевых платформ и использует реестр (Windows .exe), каталог локальных настроек (Mac OS X), флеш-куки (Flash) или HTML-куки (WebGL). Примечание. Некоторые браузеры, такие как Google Chrome, не поддерживают хранение файлов cookie при запуске HTML-страниц с локального диска. Вам необходимо запустить приложение WebGL с локального веб-сервера, чтобы протестировать эту функцию.
Поддерживаются следующие параметры:


Open a website
(Открыть вебстраницу)   
Открывает вебстраницу в браузере. Обратите внимание, что в параметре «URL» необходимо запускать её с http://, иначе это не будет работать.
Поддерживаются следующие параметры:


Execute JavaScript
(Запустить JavaScript)   
Выполняет код на JavaScript. С его помощью вы можете получить доступ почти ко всем функциям 3D-сцены. Смотрите Справочник по JavaScript для получения информации о всех поддерживаемых функциях.
Начиная с CopperCube 4.0.4, это действие работает для всех целевых платформ.
Поддерживаются следующие параметры:


Quit Application
(Выйти из приложения)   
Завершает работу приложения. Очевидно, что работает только при публикации в качестве приложения для Windows или Mac OS X.


Play or stop a video
(Воспроизвести или остановить видео)   
Воспроизводит видео в 2D или 3D. Смотрите раздел Воспроизведение видео.
Поддерживаются следующие параметры:
Название: Re: CopperCube
Отправлено: Samovar от 01 Июль 2019, 21:44:18
Специальные переменные
Имеется несколько специальных переменных для быстрого доступа к данным в текущей сцене при использовании одного из действий, обрабатывающих переменные. Имена этих переменных выглядят так: "#имя.атрибут". Используйте, например, #player1.health для получения или изменения переменной, хранящей здоровье объекта, в подключённом поведении игрового актёра (Game Actor with Health) у узла сцены с именем 'player1'.


Имя переменной
Описание


health   
Переменная здоровья объекта в поведении Game Actor with Health (Игровой актёр со здоровьем). Используйте, например, #player1.health для получения или изменения переменной, хранящей здоровье объекта, в поведении игрового актёра (Game Actor with Health) у узла сцены с именем 'player1'.


movementspeed   
Переменная скорости движения объекта в поведениях: Game Actor with Health (Игровой актёр со здоровьем), Object or Person controlled by keyboard
(Объект или персонаж контролируемый клавиатурой)  или First Person Shooter Style Controlled (Контроллер камеры в стиле шутера от первого лица). Используйте, например, #player1.movementspeed для получения или изменения переменной, хранящей скорость движения объекта при одном из таких подключенном к нему поведений у узла сцены с именем 'player1'.


damage
Переменная урона наносимого объектом, который использует действие Shoot (Выстрел). Используйте, например, #player1.damage для чтения или изменения переменной, хранящей наносимый урон от оружия у объекта с именем 'player1'.


colsmalldistance   
Переменная минимального расстояния (small distance) для столкновения, используемая поведением Collide When Moved (Сталкиваться при перемещении). Имеет очень маленькое значение, например 0,0005. Переменная влияет на то, как эллипсоид перемещается при столкновении с препятствиями. Влияет на плавность движения и трение. Вы можете использовать её для более точной настройки поведения столкновения.
Примечание: Если установлено слишком большое или слишком маленькое значение переменной, то это может привести к застреванию эллипсоида.



Системные переменные: Переменные ниже не являются частью узлов сцены, но всегда привязаны к объекту с именем 'system'. Вы можете получить к ним доступ, используя #system.атрибут, например # system.soundvolume


soundvolume   
Используйте системную переменную #system.soundvolume, чтобы изменить общую громкость всех звуков вашего приложения. Может принимать значения от 0 (без звука) до 100 (полная громкость).


Если вам нужно больше действий, то вы можете скачать их с официального сайта или даже создать свои собственные.
Название: Re: CopperCube
Отправлено: Samovar от 07 Июль 2019, 21:51:04
Справочник по JavaScript в CopperCube

CopperCube имеет очень простой интерфейс для управления всеми аспектами трехмерной сцены с помощью JavaScript. Для краткого ознакомления смотрите Обзор программирования сценариев (написания скриптов) в CopperCube. Далее перечислены все доступные функции.

Большинство из этих функций манипулируют так называемыми "узлами сцены". Узел сцены - это ни что иное, как трехмерный объект, обладающий позицией, вращением, масштабом, материалами и дочерними элементами. Название «узел сцены» существует потому, что CopperCube использует древовидный граф (менеджер сцены) для отображения сцены.

Обработка узла сцены
ccbCloneSceneNode
ccbGetActiveCamera
ccbSetActiveCamera
ccbGetChildSceneNode
ccbGetRootSceneNode
ccbGetSceneNodeChildCount
ccbGetSceneNodeProperty
ccbSetSceneNodeProperty
ccbGetSceneNodeFromName
ccbGetSceneNodeMaterialCount
ccbGetSceneNodeMaterialProperty
ccbSetSceneNodeMaterialProperty
ccbRemoveSceneNode
ccbSetSceneNodeParent
ccbSetSceneNodePositionWithoutCollision

События
ccbRegisterKeyDownEvent
ccbRegisterKeyUpEvent
ccbRegisterMouseDownEvent
ccbRegisterMouseUpEvent
ccbRegisterOnFrameEvent
ccbUnregisterOnFrameEvent

Рисование
ccbDrawColoredRectangle
ccbDrawTextureRectangle
ccbDrawTextureRectangleWithAlpha

Столкновения
ccbGet3DPosFrom2DPos
ccbGet2DPosFrom3DPos
ccbGetCollisionPointOfWorldWithLine
ccbDoesLineCollideWithBoundingBoxOfSceneNode

Разное
ccbEndProgram
ccbLoadTexture
ccbGetMousePosX
ccbGetMousePosY
ccbGetScreenWidth
ccbGetScreenHeight
ccbSetCloseOnEscapePressed
ccbSetCursorVisible
ccbSwitchToScene
ccbPlaySound
ccbStopSound
ccbGetCopperCubeVariable
ccbSetCopperCubeVariable
ccbReadFileContent
ccbWriteFileContent
ccbGetPlatform
ccbInvokeAction
ccbGetCurrentNode
ccbCleanMemory
ccbSwitchToFullscreen
ccbDoHTTPRequest
ccbCancelHTTPRequest
ccbCreateMaterial
ccbSetShaderConstant
ccbSetPhysicsVelocity
ccbUpdatePhysicsGeometry
ccbAICommand
ccbSteamSetAchievement
ccbSteamResetAchievements
ccbSaveScreenshot
ccbSaveTexture
ccbSwitchToCCBFile
print
system

Только в редакторе
confirm
alert
prompt
editorAddSceneNode
editorFocusPosition
editorGetFileNameFromDialog
editorGetSelectedSceneNode
editorGetSelectedTexture
editorUpdateAllWindows
editorRegisterMenuEntry
editorSetSelectedSceneNode

Редактирование полигональной сетки
ccbGetSceneNodeMeshBufferCount
ccbRemoveMeshBuffer
ccbAddMeshBuffer
ccbGetMeshBufferVertexCount
ccbGetMeshBufferIndexCount
ccbAddMeshBufferIndex
ccbGetMeshBufferIndexValue
ccbSetMeshBufferIndexValue
ccbAddMeshBufferVertex
ccbGetMeshBufferVertexPosition
ccbSetMeshBufferVertexPosition
ccbGetMeshBufferVertexTextureCoord
ccbSetMeshBufferVertexTextureCoord
ccbGetMeshBufferVertexNormal
ccbSetMeshBufferVertexNormal
ccbGetMeshBufferVertexColor
ccbSetMeshBufferVertexColor
ccbUpdateSceneNodeBoundingBox

Другое:

vector3d - класс вектор
Standard Library (основные математические функции, строки, массивы, регулярные выражения и т. д.)
Название: Re: CopperCube
Отправлено: Samovar от 09 Июль 2019, 01:33:58
Обработка узла сцены

ccbCloneSceneNode(Узел)

Примечание: Эта функция недоступна в редакторе.
Создает новый узел сцены на основе существующего узла сцены.

Параметр 'Узел' должен быть существующим узлом сцены. Вы можете получить существующий узел сцены с помощью ccbGetSceneNodeFromName()

Возвращает: Новый узел сцены.

Пример:

Код
var sourceNode = ccbGetSceneNodeFromName("myNode");
var newscenenode = ccbCloneSceneNode(sourceNode);

В этом примере будет создана копия существующего узла сцены с именем 'myNode'.


ccbGetActiveCamera()

Примечание: Эта функция недоступна в редакторе.
Возвращает текущую активную камеру сцены.


ccbSetActiveCamera(Узел)

Примечание: Эта функция недоступна в редакторе.
Устанавливает текущую активную камеру в сцене. Параметр 'Узел' должен быть узлом сцены типа камера.


ccbGetChildSceneNode(РодительскийУзелСцены, ИндексДочернегоУзла)

Возвращает дочерний узел родительского узла сцены. ИндексДочернегоУзла должен быть >= 0 и < ccbGetSceneNodeChildCount.

Пример:

Код
var root = ccbGetRootSceneNode();
var count = ccbGetSceneNodeChildCount(root);

for(var i=0; i<count; ++i)
{
 var child = ccbGetChildSceneNode(root, i);
 print("node:" + ccbGetSceneNodeProperty(child, "Name") + "\n");
}
               
В этом примере выводятся имена всех дочерних узлов корневого узла сцены.
 

ccbGetRootSceneNode()

Возвращает корневой узел сцены. Вы не можете удалить его, и нет смысла менять его атрибуты, но вы можете использовать его как отправную точку для итерации всего графа сцены. Взгляните на пример в описании ccbGetSceneNodeChildCount.

Возвращает: корневой узел сцены.


ccbGetSceneNodeChildCount(Узел)

Возвращает количество дочерних элементов узла сцены.

Пример:

Код
var root = ccbGetRootSceneNode();
var count = ccbGetSceneNodeChildCount(root);

print("Scene nodes in the top level of the scene graph:" + count);
Этот пример вернет '2', если в вашей сцене есть два узла сцены.



...
Название: Re: CopperCube
Отправлено: Samovar от 09 Июль 2019, 13:40:47
ccbGetSceneNodeProperty(Узел, ИмяСвойства)

Получает значение свойства узла сцены. ИмяСвойства - это имя, отображаемое в левом столбце окна свойств редактора. Возможные имена свойств зависят от типа узла сцены, но обычно такие имена, как 'Name' (Имя), 'Position' (Позиция), 'PositionAbs' (Абсолютная позиция), 'Rotation' (Поворот), 'Scale' (Масштаб), 'Visible' (Видимость), доступны почти у всех типов узлов. Обратите внимание, что имя свойства чувствительно к регистру.
Пример:
Код
var s = ccbGetSceneNodeFromName("cubeMesh1");

var position = ccbGetSceneNodeProperty(s, "Position");

print("The cube is at " + position);
Если сцена содержит узел сцены с именем  'cubeMesh1', то этот пример печатает что-то вроде: "Куб находится в (-2.15537, -0.751433, -15.6934)"
Также смотрите ccbSetSceneNodeProperty().


ccbSetSceneNodeProperty(Узел, ИмяСвойства, значение)
ccbSetSceneNodeProperty(Узел, ИмяСвойства, x, y, z)
ccbSetSceneNodeProperty(Узел, ИмяСвойства, r, g, b)

Устанавливает значение свойства узла сцены. ИмяСвойства - это имя, отображаемое в левом столбце окна свойств редактора. Возможные имена зависят от типа узла сцены, но почти для всех узлов сцены доступны имена, такие как 'Name' (Имя), 'Position' (Позиция), 'Rotation' (Поворот), 'Scale' (Масштаб) и 'Visible' (Видимость). Обратите внимание, что имя свойства чувствительно к регистру. При настройке вектора вы можете использовать параметры x, y, z или объект vector3d. Для цветов можно использовать одно значение типа int (целое) или три значения RGB, например 255,128,0.
Примеры:
Код
var s = ccbGetSceneNodeFromName("cubeMesh1");
ccbSetSceneNodeProperty(s, "Visible", false);
Делает узел с именем 'cubeMesh1' невидимым.

Код
var s = ccbGetSceneNodeFromName("cubeMesh1");
ccbSetSceneNodeProperty(s, "Rotation", 20, 90, 0);
Изменяет поворот узла с именем 'cubeMesh1' на (20, 90, 0) градусов
Также смотрите ccbGetSceneNodeProperty().


ccbGetSceneNodeFromName(Имя)

Ищет узел с именем по всему графу сцены. Обратите внимание, что 'Имя' чувствительно к регистру. Если узел найден, то он возвращается функцией, в противном случае возвращается ноль.

Пример:
Код
var s = ccbGetSceneNodeFromName("cubeMesh1");

if (s) print("found node.\n");
 else
 print("not found the node.\n")
Ищет узел сцены с именем 'cubeMesh1' и печатает текст.
 

ccbGetSceneNodeMaterialCount(Узел)

Возвращает количество материалов узла сцены.

Пример:
Код
var s = ccbGetSceneNodeFromName("cubeMesh1");
var n = ccbGetSceneNodeMaterialCount(s);

print("the scene node has " + n + " materials");
Печатает количество материалов в узле сцены с именем 'cubeMesh1'


...
Название: Re: CopperCube
Отправлено: Striver от 10 Июль 2019, 14:38:43
Shoot (Выстрел)
Цитировать
Кроме того, можно указать узел из которого должен быть произведён выстрел.
Кроме того, можно указать узел, из которого должен быть произведён выстрел.

Цитировать
Damage (Урон): Задаёт урон наносимый другим объектам, при попадании в них выстрела.
Damage (Урон): Задаёт урон, наносимый другим объектам, при попадании в них выстрела.

Цитировать
Which SceneNode as Bullet (Узел используемый как пуля): Здесь можно указать узел сцены используемый в качестве пули.
Which SceneNode as Bullet (Узел используемый как пуля): Здесь можно указать узел сцены, используемый в качестве пули.

Play a sound (Воспроизвести звук)  
Цитировать
PlayAs2D (Воспроизводить как 2D-звук): Если включено, то звук будет воспроизводится как 2D, иначе 3D.
PlayAs2D (Воспроизводить как 2D-звук): Если включено, то звук будет воспроизводиться как 2D, иначе 3D.

Цитировать
3DPosition (Позиция 3D-звука): Задаёт позицию 3D-звука.Она может быть относительна, если включена опция Relative to SceneNode (Относительно узла сцены).
3DPosition (Позиция 3D-звука): Задаёт позицию 3D-звука. Она может быть относительна, если включена опция Relative to SceneNode (Относительно узла сцены).

Restart behaviors of a scene node (Перезапустить поведения узла сцены)  
Цитировать
Работает только с определенным поведением, таким как поведение Animate a texture (Анимиацмя текстуры).
Работает только с определенным поведением, таким как поведение Animate a texture (Анимация текстуры).

Set or change a Variable (Создать или изменить переменную)
Цитировать
Они могут быть числовыми значениями или строковыми (текстовыми) и влиять на работу вашего приложения.
Это могут быть числовые или строковые (текстовые) значения, и они могут влиять на работу вашего приложения.
Цитировать
Value (Значение): Числовое значение или переменная, в зависимости от типа, указанного в поле ValueType (Тип значения).
Value (Значение): Числовое значение или имя переменной, в зависимости от типа, указанного в поле ValueType (Тип значения).

If a variable has a value do something (Если переменная имеет значение, то сделать что либо)   
Цитировать
Затем это число будет использоваться для сравнения вашей переменной.
Затем это число будет использоваться для сравнения с вашей переменной.

Цитировать
Если установлено значение Variable (Переменная), то текст в поле ниже Value (Значение) должен содержать имя другой переменной, которая затем будет использоваться для сравнения вашей переменной.
Если установлено значение Variable (Переменная), то текст в поле ниже Value (Значение) должен содержать имя другой переменной, которая затем будет использоваться для сравнения с вашей переменной.

Цитировать
Поле Action (Действие) будет выполнено только тогда, когда сравнение истинно.
Действие, заданное в поле Action (Действие), будет выполнено только тогда, когда результат сравнения - истина.

Open a website (Открыть вебстраницу) 
Цитировать
Обратите внимание, что в параметре «URL» необходимо запускать её с http://, иначе это не будет работать.
С https:// тоже работает.
У меня в режиме Windows не сработало, только в режиме WebGL.

 
Цитировать
URL: Адрес вебстраницы начинающийся с http://
URL: Адрес вебстраницы, начинающийся с http://

Play or stop a video (Воспроизвести или остановить видео)  
Цитировать
Looped (Повторяющийся): Определяет, будет ли воспроизведение видеофайла повторятся или воспроизводится только один раз.
Looped (Повторяющийся): Определяет, будет ли воспроизведение видеофайла повторяться, или он будет воспроизведён только один раз.

Цитировать
MaterialIndex (Индекс материала): Указывает индекс материала объекта, на котором будет воспроизводится видеофайл.
MaterialIndex (Индекс материала): Указывает индекс материала объекта, на котором будет воспроизводиться видеофайл.
Название: Специальные переменные
Отправлено: Striver от 10 Июль 2019, 19:46:52
Специальные переменные

damage
Цитировать
Переменная урона наносимого объектом, который использует действие Shoot (Выстрел).
Переменная урона, наносимого объектом, который использует действие Shoot (Выстрел).
Название: Справочник по JavaScript в CopperCube
Отправлено: Striver от 10 Июль 2019, 20:19:32
Справочник по JavaScript в CopperCube
Цитировать
Название «узел сцены» существует потому, что CopperCube использует древовидный граф (менеджер сцены) для отображения сцены.
Термин «узел сцены» так назван потому, что внутренне для представления сцены CopperCube использует древовидный граф (менеджер сцены).

ccbCloneSceneNode(Узел)
Цитировать
Вы можете получить существующий узел сцены с помощью ccbGetSceneNodeFromName()
Вы можете получить существующий узел сцены с помощью функции ccbGetSceneNodeFromName()

ccbSetActiveCamera(Узел)
Цитировать
Устанавливает текущую активную камеру в сцене.
Устанавливает, какой узел станет текущей активной камерой в сцене.

ccbGetRootSceneNode()
Цитировать
Взгляните на пример в описании ccbGetSceneNodeChildCount.
Взгляните на пример в описании функции ccbGetSceneNodeChildCount.
Название: Re: CopperCube
Отправлено: Samovar от 12 Июль 2019, 17:28:40
Поправил. Спасибо, Striver.
Вот это не знаю, что такое, т.к. не шарю в сайтострое:

Open a website
(Открыть вебстраницу)   

Target:  ? ? ?
Название: Re: CopperCube
Отправлено: Samovar от 12 Июль 2019, 20:23:12
ccbGetSceneNodeMaterialProperty(Узел, ИндексМатериала, ИмяСвойства)

Возвращает свойство материала узла сцены.
Параметры:
Пример:
Код
var s = ccbGetSceneNodeFromName("cubeMesh1");
var t = ccbGetSceneNodeMaterialProperty(s, 0, "Texture1");

print("texture of the cube is: " + t);
Печатает имя текстуры нулевого материала в существующем узле сцены с именем 'cubeMesh1'. Печатает нечто вроде "Текстурой куба является: textures/editor_defaults/default_texture.png"


ccbRemoveSceneNode(Узел)

Удаляет узел из сцены. Не работает для корневого узла сцены.

Пример:
Код
ccbRemoveSceneNode( ccbGetSceneNodeFromName("cubeMesh1") );
Удаляет узел сцены с именем 'cubeMesh1', если он существует.


ccbSetSceneNodeParent(Узел, НовыйРодительскийУзел)

Устанавливает родительский узел для узла сцены. Если у этого узла уже был родитель, то он будет удален от старого родителя. Обратите внимание, что при установке нового родителя, положение, вращение и масштаб дочернего узла становятся относительны нового родителя.


ccbSetSceneNodeMaterialProperty(Узел, ИндексМатериала, ИмяСвойства, Значение)

Устанавливает свойство материала узла сцены.
Параметры:
Доступные параметры материала:

Имя параметра   
Доступные значения

Type   
"solid", "lightmap", "lightmap_add", "lightmap_m2", "lightmap_m4", "reflection_2layer", "trans_add", "trans_alphach", "trans_reflection_2layer"

Texture1   
Текстура для текстурного слоя 1

Texture2   
Текстура для текстурного слоя 2

Lighting   
Значение true (истина) или false (ложь), чтобы включить или отключить динамическое освещение

Backfaceculling   
Значение true (истина) или false (ложь), чтобы включить или отключить рисование обратных сторон граней


Кроме того, если вы пишете плагин для редактора, доступны некоторые дополнительные свойства: "Type" (Тип), "Ambient" (Цвет окружающего освещения), "Diffuse" (Диффузный цвет), "Emissive" (Цвет излучения), "Specular" (Цвет блика), "Shininess" (Блеск блика), "Param1" (Параметр 1), "Param2" (Параметр 2), "Texture1" (Текстура 1), "Texture2" (Текстура 2), "Texture3" (Текстура 3), "Texture4" (Текстура 4), "Wireframe" (Каркас), "GouraudShading" (Затенение по Гуро), "Lighting" (Динамическое освещение), "ZBuffer" (Z-буфер), "ZWriteEnable" (Запись в Z-буфер), "BackfaceCulling" (Не рисовать обратные стороны граней), FrontfaceCulling" (Не рисовать передние стороны граней), "BilinearFilter" (Билинейная фильтрация), "TrilinearFilter" (Трилинейная фильтрация), "AnisotropicFilter" (Анизотропная фильтрация), "FogEnable" (Включить туман), "NormalizeNormals" (Нормализация нормалей). Более подробную информацию смотрите в разделе Свойства атрибутов и материалов Irrlicht.

Пример 1:
Код
var s = ccbGetSceneNodeFromName("cubeMesh1");
ccbSetSceneNodeMaterialProperty(s, 0, "Lighting", true);
Включает динамическое освещение для узла с именем 'cubeMesh1'.

Пример 2:
Код
var node = ccbGetSceneNodeFromName("cubeMesh1");
var tex = ccbLoadTexture("example.jpg");
ccbSetSceneNodeMaterialProperty(node, 0, "Texture1", tex);
Загружает текстуру и устанавливает ее в качестве материала для объекта с именем 'cubeMesh1'.


ccbSetSceneNodePositionWithoutCollision(Узел, x, y, z)

Устанавливает новую позицию узла сцены, даже если к нему прикреплено поведение 'Collide When Moved' (Сталкиваться при перемещении). Так что можно перемещать такой узел сквозь стены. Обратите внимание, что вы должны убедиться, что новая позиция узла сцены не находится внутри стены, в противном случае этот узел застрянет.

Пример:
Код
var s = ccbGetSceneNodeFromName("cubeMesh1");
ccbSetSceneNodePositionWithoutCollision(s, -22.097015, 9.848448, -40.738777);
Заставляет узел сцены изменять свою позицию независимо от поведения при столкновении.
Название: Re: CopperCube
Отправлено: Striver от 12 Июль 2019, 22:31:04
Поправил. Спасибо, Striver.
Вот это не знаю, что такое, т.к. не шарю в сайтострое:

Open a website
(Открыть вебстраницу)   

Target:  ? ? ?
У тега <a ...> (который в HTML, собственно, и формирует ссылки) один из параметров называется target. Этим параметром можно задать, в каком окне или фрейме откроется страница по ссылке. Цитата с сайта-учебника по HTML http://htmlbook.ru:
Цитировать
Описание
По умолчанию, при переходе по ссылке документ открывается в текущем окне или фрейме. При необходимости, это условие может быть изменено атрибутом target тега <a>. В XHTML применение этого атрибута запрещено.

Синтаксис
<a target="имя окна">...</a>
Обязательный атрибут
Нет.

Значения
В качестве значения используется имя окна или фрейма, заданное атрибутом name. Если установлено несуществующее имя, то будет открыто новое окно. В качестве зарезервированных имен используются следующие.

_blank
Загружает страницу в новое окно браузера.
_self
Загружает страницу в текущее окно.
_parent
Загружает страницу во фрейм-родитель, если фреймов нет, то это значение работает как _self.
_top
Отменяет все фреймы и загружает страницу в полном окне браузера, если фреймов нет, то это значение работает как _self.
Значение по умолчанию
_self
Скорее всего, здесь имеется ввиду именно это.
Название: Re: CopperCube
Отправлено: Samovar от 12 Июль 2019, 22:33:15
Спасибо! Поправлю.
Название: Re: CopperCube
Отправлено: Samovar от 12 Июль 2019, 22:44:30
События

ccbRegisterKeyDownEvent(ИмяФункции)

Примечание: Эта функция недоступна в редакторе и доступна только в целевом приложении Windows и Mac OS X. Для получения событий клавитуры используйте функцию поведения onKeyEvent().


Регистрирует функцию для получения события нажатия клавиши. Зарегистрированная функция должна принимать один параметр, который будет кодом клавиши.

Пример:
Код
ccbRegisterKeyDownEvent("keyPressedDown");

function keyPressedDown(keyCode)
{
    print("A key was pressed down:" + keyCode);
}

При нажатии печатает, какая клавиша была нажата.



ccbRegisterKeyUpEvent(ИмяФункции)

Примечание: Эта функция недоступна в редакторе и доступна только в целевом приложении Windows и Mac OS X. Для получения событий клавитуры используйте функцию поведения onKeyEvent().

Регистрирует функцию для получения события отпускания клавиши. Зарегистрированная функция должна принимать один параметр, который будет кодом клавиши.

Пример:
Код
ccbRegisterKeyUpEvent("keyPressedUp");


function keyPressedUp(keyCode)
{
  print("A key was left up:" + keyCode);
}

При отпускании клавиши печатает, какая клавиша была отпущена.



ccbRegisterMouseDownEvent(ИмяФункции)

Примечание: Эта функция недоступна в редакторе и доступна только в целевом приложении Windows и Mac OS X. Для получения событий мыши используйте функцию поведения onMouseEvent().

Регистрирует функцию для получения события нажатия клавиши. Зарегистрированная функция должна принимать один параметр, которым будет нажатя кнопка мыши (1 для левой кнопки, 2 для правой кнопки, 3 для средней кнопки).

Пример:
Код
ccbRegisterMouseDownEvent("mousePressedDown");

function mousePressedDown(button)
{
   print("A mouse button was presssed down:" + button);
}

При нажатии кнопки мыши печатает, какая кнопка была нажата.



ccbRegisterMouseUpEvent(ИмяФункции)

Примечание: Эта функция недоступна в редакторе и доступна только в целевом приложении Windows и Mac OS X. Для получения событий мыши используйте функцию поведения onMouseEvent().

Регистрирует функцию для получения события отпускания клавиши. Зарегистрированная функция должна принимать один параметр, которым будет отпущенная кнопка мыши (1 для левой кнопки, 2 для правой кнопки, 3 для средней кнопки).

Пример:
Код
ccbRegisterMouseUpEvent("mouseLeftUp");

function mouseLeftUp(button)
{
    print("A mouse button was left up:" + button);
}

При отпускании кнопки мыши печатает, какая кнопка была отпущена.



ccbRegisterOnFrameEvent(Функция)
ccbUnregisterOnFrameEvent(Функция)

Примечание: Эти функции недоступны в редакторе.

Функция ccbRegisterOnFrameEvent регистрирует вашу функцию выполняемую при событии 'on frame', которое происходит каждый кадр отрисовки экрана. Зарегистрированная функция не должна принимать никаких параметров. С помощью этой функции можно рисовать собственные, пользовательские вещи,  например, интерфейсы пользователя.
После того, как вам больше не нужны события происходящие каждый кадр, вызовите функцию ccbUnregisterOnFrameEvent(), чтобы отменить регистрацию вашей функции.

Пример:
Код
function onFrameDrawing()
{
   // нарисовать красный, прозрачный прямоугольник в позиции мыши
 var mouseX = ccbGetMousePosX();
 var mouseY = ccbGetMousePosY();

   ccbDrawColoredRectangle(0x77ff0000, mouseX-10, mouseY-10, mouseX+10, mouseY+10);
}

ccbRegisterOnFrameEvent(onFrameDrawing);

Рисует красный прямоугольник в позиции курсора мыши (или в центре, если курсор мыши управляет камерой от первого лица в стиле FPS).
Название: Re: CopperCube
Отправлено: Samovar от 13 Июль 2019, 10:23:25
Рисование

ccbDrawColoredRectangle(Цвет, x1, y1, x2, y2)

Примечание: Эта функция недоступна в редакторе.

Рисует цветной прямоугольник. Эта функция может использоваться только внутри функции события кадра, которая должна быть зарегистрирована с помощью ccbRegisterOnFrameEvent().

Цвет представляет собой 32-битное значение с альфа-каналом, красным, зеленым и синим компонентами (0xaarrggbb, подобно значениям цвета, известным из HTML, но с добавленным вначале значением прозрачности альфа-канала). Например, 0x77ff0000 - это прозрачный красный, 0xff0000ff - непрозрачный синий.

Пример:
Код
function onFrameDrawing()
{
   // нарисовать красный, прозрачный прямоугольник в позиции мыши
 var mouseX = ccbGetMousePosX();
 var mouseY = ccbGetMousePosY();

   ccbDrawColoredRectangle(0x77ff0000, mouseX-10, mouseY-10, mouseX+10, mouseY+10);
}

ccbRegisterOnFrameEvent(onFrameDrawing);
Рисует красный прямоугольник в позиции курсора мыши (или в центре, если курсор мыши управляет камерой от первого лица в стиле FPS).


ccbDrawTextureRectangle(ФайлИзображения, x1, y1, x2, y2)

Примечание: Эта функция недоступна в редакторе.

Рисует текстурированный прямоугольник. Эта функция может использоваться только внутри функции события кадра, которая должна быть зарегистрирована с помощью ccbRegisterOnFrameEvent().

Эта функция будет игнорировать альфа-канал текстуры. Используйте ccbDrawTextureRectangleWithAlpha, если вы хотите, чтобы альфа-канал также учитывался.

Пример:
Код
function onFrameDrawing()
{
 // нарисовать текстурированный прямоугольник в позиции мыши
 var mouseX = ccbGetMousePosX();
 var mouseY = ccbGetMousePosY();

 ccbDrawTextureRectangle("someFile.png", mouseX-100, mouseY-100, mouseX+100, mouseY+100);
}

ccbRegisterOnFrameEvent(onFrameDrawing);
Рисует текстурированный прямоугольник в позиции курсора мыши (или в центре, если курсор мыши управляет камерой от первого лица в стиле FPS).


ccbDrawTextureRectangleWithAlpha(ФайлИзображения, x1, y1, x2, y2)

Примечание: Эта функция недоступна в редакторе.

Рисует текстурированный прямоугольник с альфа-каналом. Эта функция может использоваться только внутри функции события кадра, которая должна быть зарегистрирована с помощью ccbRegisterOnFrameEvent().

Эта функция будет учитывать альфа-канал текстуры, используйте ccbDrawTextureRectangleWithAlpha, чтобы у текстуры не было альфа-канала.

Пример:
Код
function onFrameDrawing()
{
   // нарисовать текстурированный прямоугольник в позиции мыши
    var mouseX = ccbGetMousePosX();
 var mouseY = ccbGetMousePosY();

   ccbDrawTextureRectangleWithAlpha("someFile.png", mouseX-100, mouseY-100, mouseX+100, mouseY+100);
}

ccbRegisterOnFrameEvent(onFrameDrawing);
Рисует текстурированный прямоугольник в позиции курсора мыши (или в центре, если курсор мыши управляет камерой от первого лица в стиле FPS).
Название: Re: CopperCube
Отправлено: Samovar от 13 Июль 2019, 10:50:06
Поправил:

Open a website
(Открыть вебстраницу)   

Открывает вебстраницу в браузере. Действие работает только на целевой платформе WebGL. Обратите внимание, что в параметре «URL» необходимо запускать её с http:// или https://, иначе это не будет работать.
Поддерживаются следующие параметры:
Название: Re: CopperCube
Отправлено: Samovar от 13 Июль 2019, 12:26:18
Столкновения

ccbGet3DPosFrom2DPos(x,y)

Возвращает 3D-позицию из 2D-позиции на экране.
Примечание: двумерная позиция на экране представляет собой не одну трехмерную точку, а фактически трехмерную линию. Таким образом, чтобы сформировать эту линию, используйте 3D-точку, возвращаемую этой функцией, и положение текущей камеры.

Пример:
Код
var mouseX = ccbGetMousePosX();
var mouseY = ccbGetMousePosY();

var anode = ccbGetSceneNodeFromName("somenode");
var pos3d = ccbGet3DPosFrom2DPos(mouseX, mouseY);
ccbSetSceneNodeProperty(anode, "Position", pos3d);
Устанавливает положение узла сцены с именем 'somenode' в 3D-положение за курсором мыши.


ccbGet2DPosFrom3DPos(x,y,z)

Возвращает 2D-позицию из 3D-позиции или ничего, если позиция не находится в пределах экрана (например, она находится за камерой).

Пример:
Код
var pos = ccbGet2DPosFrom3DPos(20, 30, 30);  
print("Position on screen: " + pos);
Печатает положение 3D-координаты в 2D.


ccbGetCollisionPointOfWorldWithLine(НачалоX, НачалоY, НачалоZ, КонецX, КонецY, КонецZ)

Возвращает точку столкновения 3D-линии с 3D-миром. Возвращает ноль, если нет столкновения.


ccbDoesLineCollideWithBoundingBoxOfSceneNode(Узел, НачалоX, НачалоY, НачалоZ, КонецX, КонецY, КонецZ)

Возвращает true (истина), если ограничивающий контейнер данного узла сцены сталкивается с 3D-линией между двумя заданными точками. Иначе возвращает false (ложь).

Пример:
Код
function onFrameDrawing()
{
 var mouseX = ccbGetMousePosX();
 var mouseY = ccbGetMousePosY();
 
  // проверка столкновения

 var cube = ccbGetSceneNodeFromName("cubeMesh1");   
 var endPoint3d = ccbGet3DPosFrom2DPos(mouseX, mouseY);
 var  startPos3D = ccbGetSceneNodeProperty(ccbGetActiveCamera(), "Position");
 
  if (ccbDoesLineCollideWithBoundingBoxOfSceneNode(cube, startPos3D.x, startPos3D.y,
                          startPos3D.z, endPoint3d.x, endPoint3d.y, endPoint3d.z))
   {
     ccbDrawColoredRectangle(0x77ff0000, mouseX-10, mouseY-10, mouseX+10, mouseY+10);
  }
 else
     ccbDrawColoredRectangle(0x770000ff, mouseX-10, mouseY-10, mouseX+10, mouseY+10);
}

ccbRegisterOnFrameEvent(onFrameDrawing);
Рисует красный прямоугольник в позиции курсора мыши (или в центре экрана, если управляется контроллером камеры от первого лица в стиле FPS), если курсор мыши находится над узлом сцены с именем 'cubeMesh1', и рисует синий прямоугольник, если нет.
Название: Re: CopperCube
Отправлено: Samovar от 14 Июль 2019, 06:56:35
Изменено

Цитировать
Рисование

ccbDrawTextureRectangleWithAlpha(ФайлИзображения, x1, y1, x2, y2)

Эта функция будет учитывать альфа-канал текстуры, используйте ccbDrawTextureRectangleWithAlpha, чтобы у текстуры не было альфа-канала.

Эта функция будет учитывать альфа-канал текстуры, используйте ccbDrawTextureRectangle, чтобы у текстуры не было альфа-канала.


Цитировать
Действия

Execute JavaScript
(Запустить JavaScript)

Execute JavaScript
(Выполнить JavaScript)
Название: Re: CopperCube
Отправлено: Samovar от 14 Июль 2019, 07:07:16
Разное

ccbEndProgram()

Примечание: Эта функция недоступна в редакторе.
Завершает приложение. В приложениях для платформ Flash и WebGL эта функция закрывает окно (если оно было открыто ранее скриптом, как всплывающее окно).


ccbLoadTexture(ИмяФайлаИзображения)

Загружает текстуру в текстурный кеш. В случае успеха, возвращает объект текстуры , который затем можно использовать, например, в вызове функции ccbSetSceneNodeMaterialProperty() с указанием в ней в качестве параметра этот объект текстуры. Обратите внимание, что текстура загружается только один раз. Вы можете вызвать эту функцию несколько раз с одним и тем же именем файла текстуры, но CopperCube не будет пытаться загрузить файл снова, если он уже был загружен ранее.

Параметры:

ИмяФайлаИзображения: имя текстуры для загрузки. Используйте что-то вроде 'example.jpg', тогда он загрузит файл 'example.jpg' из каталога, где находится ваше приложение для Windows или Mac OS X. На целевых платформах Flash и WebGL, файл будет загружен с того места, где находится ваш сайт на сервере. Для этих целей также можно использовать URL-адреса (например, "http://www.example.com/foobar.jpg") в качестве параметра, но это также зависит от настроек безопасности вашего браузера.
Пример:
Код
var node = ccbGetSceneNodeFromName("cubeMesh1");
var tex = ccbLoadTexture("example.jpg");
ccbSetSceneNodeMaterialProperty(node, 0, "Texture1", tex);
Загружает текстуру и устанавливает ее первой текстурой в материал с индексом 0 у объекта с именем 'cubeMesh1'.


ccbGetMousePosX()

Примечание: Эта функция недоступна в редакторе.
Возвращает текущую позицию курсора мыши по оси X в пикселях.

Пример:
Код
function onFrameDrawing()
{
   // нарисовать красный, прозрачный прямоугольник в позиции мыши
 var mouseX = ccbGetMousePosX();
 var mouseY = ccbGetMousePosY();

   ccbDrawColoredRectangle(0x77ff0000, mouseX-10, mouseY-10, mouseX+10, mouseY+10);
}

ccbRegisterOnFrameEvent(onFrameDrawing);
Рисует красный прямоугольник в позиции курсора мыши (или в центре, если курсор мыши управляет камерой от первого лица в стиле FPS). 


ccbGetMousePosY()

Примечание: Эта функция недоступна в редакторе.
Возвращает текущую позицию курсора мыши по оси Y в пикселях.

Пример:
Код
function onFrameDrawing()
{
   // draw a red, transparent rectangle at the position of the mouse
 var mouseX = ccbGetMousePosX();
 var mouseY = ccbGetMousePosY();

   ccbDrawColoredRectangle(0x77ff0000, mouseX-10, mouseY-10, mouseX+10, mouseY+10);
}

ccbRegisterOnFrameEvent(onFrameDrawing);
Рисует красный прямоугольник в позиции курсора мыши (или в центре, если курсор мыши управляет камерой от первого лица в стиле FPS). 


ccbGetScreenWidth()

Примечание: Эта функция недоступна в редакторе.
Возвращает текущую ширину экрана в пикселях.


ccbGetScreenHeight()

Примечание: Эта функция недоступна в редакторе.
Возвращает текущую высоту экрана в пикселях.


ccbSetCloseOnEscapePressed(БулевоеЗначение)

По умолчанию, когда пользователь нажимает клавишу escape в режиме отладки, приложение для Windows и Mac OS X закрывается. Вызов функции ccbSetCloseOnEscapePressed (false) отключает эту возможность. На других целевых платформах эта функция не работает.

Параметры:

БулевоЗначение: Значение true (истина или 1) или false (ложь или 0).


ccbSetCursorVisible(БулевоеЗначение)

Примечание: Эта функция может ничего не делать в зависимости от целевой платформы, на которой она выполняется (например, веб-приложения не имеют доступа к курсору мыши).
Управляет видимостью курсора мыши. Вызовите функцию ccbSetCursorVisible (false), чтобы сделать курсор мыши невидимым, или вызовите функцию ccbSetCursorVisible (true), чтобы снова сделать его видимым.

Параметры:

БулевоЗначение: Значение true (истина или 1) или false (ложь или 0).


ccbSwitchToScene(ИмяСцены)

Примечание: Эта функция недоступна в редакторе.
Переключает движок на сцену с указанным именем. Функция ccbSwitchToScene("моя сцена") переключит движок на сцену с именем "моя сцена", если она есть.
Примечание: ИмяСцены чувствительно к регистру.


ccbPlaySound(ИмяЗвуковогоФайла)

Функция воспроизводит звуковой или музыкальный файл. В Windows и Mac OS X поддерживаются следующие форматы файлов: WAV, OGG, MOD, XM, IT, S3M. Для других целевых платформ форматы зависят файлов зависит от их поддержки браузером и платформой. Но обычно, MP3 и OGG должны работать везде.


ccbStopSound(ИмяЗвуковогоФайла)

Останавливает воспроизведение звука или музыки, которые были запущены функцией ccbPlaySound, либо действием "Play а sound" (Воспроизвести звук).


ccbSetCopperCubeVariable(ИмяПеременной, Значение)

Устанавливает определённое значение переменной в CopperCube. Переменные в CopperCube могут быть созданы и изменены с помощью действия "Set or change a Variable" (Создать или изменить переменную) в редакторе.


ccbGetCopperCubeVariable(ИмяПеременной)

Получает значение переменной в CopperCube. Переменные в CopperCube могут быть созданы и изменены с помощью действия "Set or change a Variable" (Создать или изменить переменную) в редакторе.


ccbReadFileContent(ИмяТекстовогоФайла)

Примечание: Эта функция может ничего не делать, в зависимости от целевой платформы, на которой она выполняется (например, веб-сайты не имеют доступа к файловой системе).
Читает полностью (текстовый) файл в строку.


ccbWriteFileContent(ИмяТекстовогоФайла, ТекстовоеСодержимое)

Примечание: Эта функция может ничего не делать, в зависимости от целевой платформы, на которой она выполняется (например, веб-сайты не имеют доступа к файловой системе).
Записывает полностью (текстовый) файл из строки.

...
Название: Re: CopperCube
Отправлено: Striver от 19 Июль 2019, 22:46:55
ccbGetSceneNodeMaterialProperty(Узел, ИндексМатериала, ИмяСвойства)
Цитировать
Должно быть значение большее или равное 0, и меньшее, чем ccbGetSceneNodeMaterialCount().
Должно быть значение, большее или равное 0, и меньшее, чем ccbGetSceneNodeMaterialCount().

ccbSetSceneNodeParent(Узел, НовыйРодительскийУзел)
Цитировать
Обратите внимание, что при установке нового родителя, положение, вращение и масштаб дочернего узла становятся относительны нового родителя.
Обратите внимание, что при установке нового родителя, положение, вращение и масштаб дочернего узла действуют по отношению к новому родителю.
или
Обратите внимание, что при установке нового родителя, положение, вращение и масштаб дочернего узла вычисляются по отношению к новому родителю.

ccbSetSceneNodeMaterialProperty(Узел, ИндексМатериала, ИмяСвойства, Значение)
Цитировать
Должно быть значение большее или равное 0, и меньшее, чем ccbGetSceneNodeMaterialCount().
Должно быть значение, большее или равное 0, и меньшее, чем ccbGetSceneNodeMaterialCount().

ccbRegisterKeyDownEvent(ИмяФункции)
Цитировать
Для получения событий клавитуры используйте функцию поведения onKeyEvent().
Для получения событий клавиатуры используйте функцию поведения onKeyEvent().
тоже самое в ccbRegisterKeyUpEvent(ИмяФункции)

ccbRegisterMouseDownEvent(ИмяФункции)
Цитировать
Зарегистрированная функция должна принимать один параметр, которым будет нажатя кнопка мыши (1 для левой кнопки, 2 для правой кнопки, 3 для средней кнопки).
Зарегистрированная функция должна принимать один параметр, которым будет код нажатой кнопки мыши (1 для левой кнопки, 2 для правой кнопки, 3 для средней кнопки).

ccbRegisterMouseUpEvent(ИмяФункции)
Цитировать
Зарегистрированная функция должна принимать один параметр, которым будет отпущенная кнопка мыши (1 для левой кнопки, 2 для правой кнопки, 3 для средней кнопки).
Зарегистрированная функция должна принимать один параметр, которым будет код отпущенной кнопки мыши (1 для левой кнопки, 2 для правой кнопки, 3 для средней кнопки).

ccbRegisterOnFrameEvent(Функция)
ccbUnregisterOnFrameEvent(Функция)

Цитировать
Функция ccbRegisterOnFrameEvent регистрирует вашу функцию выполняемую при событии 'on frame', которое происходит каждый кадр отрисовки экрана.

Функция ccbRegisterOnFrameEvent регистрирует вашу функцию, выполняемую при событии 'on frame', которое происходит каждый кадр отрисовки экрана.

Цитировать
После того, как вам больше не нужны события происходящие каждый кадр, вызовите функцию ccbUnregisterOnFrameEvent(), чтобы отменить регистрацию вашей функции.
После того, как вам стало больше не нужно выполнять вашу функцию при отрисовке каждого кадра, вызовите функцию ccbUnregisterOnFrameEvent(), чтобы отменить регистрацию вашей функции.

ccbGetCollisionPointOfWorldWithLine(НачалоX, НачалоY, НачалоZ, КонецX, КонецY, КонецZ)
Цитировать
Возвращает ноль, если нет столкновения.
Возвращает null, если нет столкновения.
null в Javascript - это совсем не тоже самое, что числовой ноль. (Аналогичные типы отсутствия значения есть в большинстве других языков, например в Питоне это None). Лучше везде, где этот null встречается, оставлять его без перевода.

ccbLoadTexture(ИмяФайлаИзображения)
Цитировать
В случае успеха, возвращает объект текстуры , который затем можно использовать, например, в вызове функции ccbSetSceneNodeMaterialProperty() с указанием в ней в качестве параметра этот объект текстуры.
В случае успеха возвращает объект текстуры, который затем можно использовать, например, в вызове функции ccbSetSceneNodeMaterialProperty() с указанием в ней в качестве параметра этот объект текстуры.

ccbPlaySound(ИмяЗвуковогоФайла)
Цитировать
Для других целевых платформ форматы зависят файлов зависит от их поддержки браузером и платформой.
Для других целевых платформ поддержка форматов файлов зависит от их поддержки браузером и платформой.
Название: Re: CopperCube
Отправлено: Samovar от 20 Июль 2019, 03:39:15
Спасибо, Striver! Поправил.

ccbInvokeAction(ИдентефикаторДействия, ТекущийУзел)

Запускает действие CopperCube. Применяется для использования совместно со сценарием расширения поведения или действия. Если в редакторе было определено какое-либо действие, которое будет выполнено для этого расширенного поведения или действия, то вы можете запустить его с помощью этой функции.

Параметры:
Пример:

Предположим, у вас есть скрипт расширения действия со следующим определением:
Код
<property name="ActionWhenFinished" type="action" />
Это означает, что экземпляр этого действия в JavaScript, во время выполнения, будет иметь свойство с именем 'ActionWhenFinished' (Действие при завершении), ссылаясь на действие, определенное пользователем в редакторе. Вы можете запустить это действие, используя вызов:
Код
ccbInvokeAction(this.ActionWhenFinished);
                                                       
Обратите внимание, что для большинства действий предполагается использование 'currentNode' (Текущего узла), поэтому установите для него реальное действие, которое имеет смысл быть текущим узлом в этом контексте, например так:
Код
ccbInvokeAction(this.ActionWhenFinished, this.УзелСкоторымЯсейчасРаботаю);
                                                       

ccbGetCurrentNode()

Возвращает текущий узел сцены. При выполнении некоего кода JavaScript с помощью действия 'Execute JavaScript' (Выполнить JavaScript), всегда выбран "current node" (текущий узел), обычно это узел, в котором выполняется действие.


ccbCleanMemory()

Очищает текущую использованную память. Пытается освободить как можно больше памяти, освобождая неиспользуемые текстуры, буферы вершин, индексов и тому подобное. Эту функцию полезно вызывать, например, после переключения сцен, чтобы увеличить производительность приложения. Может иметь разные эффекты на разных платформах.


ccbGetPlatform()

Возвращает строку, идентифицирующую систему, в которой работает приложение CopperCube. На данный момент возможны следующие типы возвращаемой строки:

ccbSwitchToFullscreen(БлокировкаУказателяМыши, ЭлементПереключенияНаПолныйЭкран, ПереключениеОбратноВОконный)

При запуске в качестве Windows .exe, WebGL или Flash-приложения переключает приложение в полноэкранный режим, а также включает блокировку указателя мыши для Flash или WebGL, если это необходимо. Обратите внимание, что эта функция ничего не делает или даже не существует на платформах, которые не являются Windows .exe, WebGL или Flash.

Параметры:
Существуют некоторые ограничения для этой функции:

ccbDoHTTPRequest(URL, Отклик)
ccbCancelHTTPRequest(ИдентефикаторСоединенияДляОтмены)

Примечание: Эта функция недоступна в редакторе.
Функция ccbDoHTTPRequest() отправляет сетевой запрос GET через HTTP на любой веб-сервер, а функция ccbCancelHTTPRequest() может отменить этот запрос во время работы. Это позволяет легко общаться с любым веб-сервером / базой данных / многопользовательским сервером. Для функции ccbDoHTTPRequest() параметры следующие:
Функция возвращает уникальный идентификатор для идентификации этого запроса. Вы можете использовать этот идентификатор в качестве параметра для функции ccbCancelHTTPRequest(), чтобы отменить запущенный запрос, если, например, он занимает слишком много времени.

Примечание: В некоторых целевых платформах, таких как WebGL и Flash, междоменные запросы невозможны по соображениям безопасности. Обычно вы должны делать запросы только к тому же серверу, на котором работает ваш скрипт.

Пример:
Код
function finishedRequest(dataReceived)
{
  print("finished request! Data size:" + dataReceived.length);
}

ccbDoHTTPRequest("http://www.ambiera.com/index.html", finishedRequest);
Загружает главную страницу www.ambiera.com и показывает, сколько байт содержит страница.


ccbCreateMaterial(ВершинныйШейдер, ФрагментныйШейдер, ТипОсновногоМатериала, Отклик)
ccbSetShaderConstant(Тип, Имя, Значение1, Значение2, Значение3, Значение4)

Примечание: Эта функция недоступна в редакторе.
Функция ccbCreateMaterial() создает новый материал на основе вершинного и пиксельного (фрагментного) шейдеров. Смотрите Программирование шейдеров в CopperCube.

Параметры для функции ccbCreateMaterial():
Функция возвращает уникальный идентификатор материала, который вы можете использовать для замены материала у любого узла сцены, на ваш новый материал, с помощью ccbSetSceneNodeMaterialProperty(). Возвращает -1, если произошла ошибка.

Функция ccbSetShaderConstant() может быть вызвана только в функции отклика материала.
Параметры для функции ccbSetShaderConstant():
Примеры можно найти в  разделе Программирование шейдеров в CopperCube.


ccbSetPhysicsVelocity(Узел, x, y, z)

Примечание: Эта функция недоступна в редакторе.
Устанавливает линейную скорость объекта, перемещаемого физическим движком. Это работает только тогда, когда включена и доступна физическая симуляция для текущей платформы.

Параметры:

ccbUpdatePhysicsGeometry()

Примечание: Эта функция недоступна в редакторе.
Обновляет геометрию столкновений для физического движка. Вызывайте эту функцию, когда вы изменили статическую геометрию мира или объекта, и хотите, чтобы физическая симуляция это учитывала. Работает только тогда, когда  физический движок включен и доступен для текущей платформы.


ccbAICommand(Узел, Команда, Параметр)

Примечание: Эта функция недоступна в редакторе.
Посылает команду объекту с поведением 'Game Actor with Health' (Игровой актер со здоровьем). С помощью этой функции можно заставить объект перемещаться куда-либо и атаковать что-либо, или делать нечто подобное.

Параметры:
Возможные команды и параметры:
Примеры:
Код
var s = ccbGetSceneNodeFromName("man");
var otherNode = ccbGetSceneNodeFromName("soldier");
ccbAICommand(s, "attack", otherNode);
Заставляет актёра с именем "man" (человек) атаковать другой узел с именем "soldier" (солдат).

Код
var s = ccbGetSceneNodeFromName("man");
ccbAICommand(s, "moveto", new vector3d(-16.4, 4.5, -38.7));
Заставляет актёра с именем "man" (человек) двигаться в позицию -16.4, 4.5, -38.7


ccbSteamSetAchievement(ИдентификаторДостижения)

Примечание: Эта функция работает только на целевой палатформе Windows .exe.
Устанавливает достижение Steam как достигнутое. 'ИдентификаторДостижения' - это строка, которую вы указываете в интерфейсе администратора Steam при создании достижения. Также нарисует оверлей достижения, если достижение установлено в первый раз. Смотрите подробности в Описании поддержки Steam.


ccbSteamResetAchievements()

Примечание: Эта функция работает только на целевой платформе Windows .exe
Сбрасывает все достижения Steam для текущего пользователя. Смотрите подробности в Описании поддержки Steam.


ccbSaveScreenshot(ИмяФайлаИзображения)

Примечание: Эта функция работает только в Windows .exe и Mac OS X .app.
Делает снимок экрана: сохраняет текущее содержимое экрана в файле изображения на диск. Единственным параметром должно быть имя файла, например "test.jpg" или "C:\\test.jpg". Поддерживаемые форматы файлов: .bmp, .jpg, .tga, .psd, .pcx, .png и .ppm.


ccbSaveTexture(Текстура, ИмяФайлаИзображения)

Примечание: Эта функция работает только в редакторе, в Windows .exe и Mac OS X .app.
Сохраняет текстуру как файл изображения. Первый параметр - это текстура, вторым должно быть имя файла, например "test.jpg" или "C:\\test.jpg". Поддерживаемые форматы файлов: .bmp, .jpg, .tga, .psd, .pcx, .png и .ppm.
Пример:
Код
var s = ccbGetSceneNodeFromName("cubeMesh1");
var t = ccbGetSceneNodeMaterialProperty(s, 0, "Texture1");
ccbSaveTexture(t, "testout.jpg");


ccbSwitchToCCBFile(ИмяФайлаCopperCube)

Примечание: Эта функция работает только в Windows .exe и Mac OS .app.
Если ваша игра использует много данных, таких как текстуры / звуки / сцены и т. д., то вы можете динамически загружать уровни и сцены во время выполнения приложения, используя эту функцию. При вызове, функция освободит память и загрузит/запустит указанный файл. Это позволяет легко разделить вашу игру на несколько файлов.

Пример:
Код
ccbSwitchToCCBFile("ДругойФайл.ccb");


print(Текст)
Выводит строку в окне вывода редактора или в окне консоли отладки приложения.


system(КоманднаяСтрока)

Выполняет заданную командную строку. Может использоваться для выполнения команд и запуска программ.

Пример:
Код
system("type C:\\Windows\\WindowsUpdate.log");
В Windows это выведет на экран содержимое файла WindowsUpdate.log (если он доступен).
Название: Re: CopperCube
Отправлено: Samovar от 20 Июль 2019, 18:35:31
Только в редакторе

alert(Текст)

Эта функция доступна только в редакторе CopperCube
Показывает строку сообщения в модальном окне.

Пример:
Код
alert("Hello World");
Показывает текст сообщения "Hello World!" в модальном окне


confirm(Текст)

Эта функция доступна только в редакторе CopperCube
Показывает строку  сообщения в модальном окне и просит нажать кнопку ОК или CANCEL.
Пример:
Код
if (confirm("Continue?"))
   print("User pressed OK!");
else
   print("User pressed Cancel.");
Показывает текст "Continue?" в модальном окне и печатает текст в зависимости от того, какую кнопку нажал пользователь.


prompt(Текст, РедактируемыйТекст)

Эта функция доступна только в редакторе CopperCube
Показывает поле редактирования в модальном окне и просит нажать кнопку ОК или CANCEL.
Пример:
Код
var ret = prompt("Please enter a text", "some text");
if (ret)
  print("User entered this:" + ret);
else
  print("User pressed cancel");
Показывает текст сообщения "Please enter a text" в модальном окне и дополнительном окне редактирования.


editorAddSceneNode(Тип)
editorAddSceneNode(Тип, x, y, z)
editorAddSceneNode(Тип, x, y, z, Размер)

Создает новый узел сцены заданного типа (должен быть строкой) в позиции x, y, z, и применяет к нему настройки редактора по умолчанию, затем выделяет его и обновляет все виды в редакторе. Это так же, как если бы пользователь использовал команду 'Edit->Insert' (Правка->Вставить) из меню редактора.

Параметр 'Тип' должен быть одной из следующих строк:

"cube", "sphere", "cylinder", "cone", "plane", "light", "camera", "billboard", "skybox", "hotspot", "3dsound", "overlay2d"

x,y,z - это позиция, где будет создан узел сцены. Если не используется, то позиция будет задана редактором.

Параметр 'Размер' является необязательным и задает размер объекта, например, ширина и высота куба по умолчанию будет составлять 10 единиц.

Возвращает: новый узел сцены.

Примеры:
Код
var count = 3;
var size = 12;
for (var x=0; x<count; ++x)
   for (var y=0; y<count; ++y)
      for (var z=0; z<count; ++z)
         editorAddSceneNode("cube", x*size, y*size, z*size);
В этом примере будет создано 27 кубов, размещенных в гиперкубе.

Код
editorAddSceneNode("billboard");
В этом примере будет создан билборд, и размещен непосредственно перед 3D-камерой на экране.
 

editorFocusPosition(Позиция)

Заставляет камеры всех окон просмотра сфокусироваться на заданной позиции.

Пример:
Код
editorFocusPosition(vector3d(0,10,20));
Заставляет камеры сфокусироваться на позиции (0,10,20)
 

editorGetSelectedSceneNode()

Возвращает текущий выделенный сцены или 0, если ничего не выделено.

Пример:
Код
var s = editorGetSelectedSceneNode();

if (s)
   alert("Name of the selected node is: '" + ccbGetSceneNodeProperty(s, "Name") + "'");
else
   alert("nothing selected");
В этом примере печатается имя выделенного в данный момент узла сцены.
 

editorGetSelectedTexture()

Возвращает текущую текстуру, которая выделена в окне менеджера текстур.

Пример:
Код
var t = editorGetSelectedTexture();
var s = editorAddSceneNode("cube");

ccbSetSceneNodeMaterialProperty(s, 0, "Texture1", t);

if (t == "")
  print("added no texture");
else
  print("set texture to: " + t );
editorUpdateAllWindows(); 
Создает новый куб и применяет к нему текущую выделенную текстуру.
 

editorGetFileNameFromDialog()
editorGetFileNameFromDialog(Сообщение)
editorGetFileNameFromDialog(Сообщение, РасширенияФайлов)
editorGetFileNameFromDialog(Сообщение, РасширенияФайлов, ЭтоДиалогОткрытияФайла)

Отображает диалоговое окно выбора файла, предлагающее пользователю выбрать файл, и возвращает выбранное имя файла или пустую строку, если пользователь отменил выбор.

Параметры:
Пример:
Код
var s = editorGetFileNameFromDialog("please select something");

if (s != "")
   alert ("user selected " + s);
else
   alert("user cancelled selection");
В этом примере пользователю предлагается выбрать файл, после чего печатается имя выбранного файла.
 

editorUpdateAllWindows()

Обновляет все окна редактора. То же самое, что и 'View-> UpdateAllWindows' (Вид->Обновить все окна) или нажатие клавиши F5 в редакторе.

Пример:
Код
editorAddSceneNode("cube");
editorUpdateAllWindows();
В этом примере создается новый куб с настройками по умолчанию и обновляются окна редактора, чтобы отобразить новый узел сцены во всех окнах.
 

editorRegisterMenuEntry(Фунция, Текст)
 
Регистрирует новую запись в меню 'Plugins' (Плагины), используя текст, указанный в параметре 'Текст'. Когда команда из меню выбирается пользователем, выполняется глобальная функция, указанная в параметре 'Функция'.
Обратите внимание, что функция editorRegisterMenuEntry() работает только в сценариях, запущенных в режиме автозапуска. Это означает, что сценарий должен быть расположен в каталоге \Documents\CopperCube\plugins и с расширением '.js'.

Пример:
Код
function printHello()
{
  print("Hello\n");
}

editorRegisterMenuEntry("printHello();", "Print Hello into the log");
Помещение этого скрипта в файл с именем, например, 'CopperCube\plugins\autostart_printhello.js' и запуск редактора, добавит новый пункт меню в меню 'Edit->Plugins' (Правка->Плагины), который, при его выборе, напечатает 'Hello' в окне сообщений (Message Log).
 

editorSetSelectedSceneNode(Узел)

Делает указанный узел сцены выделенным. Укажите 0 в параметре функции, чтобы ничего не выделять.

Пример:
Код
var s = editorAddSceneNode("sphere");
editorSetSelectedSceneNode(s);
Добавляет узел сцены и выделяет его в редакторе.


Название: Re: CopperCube
Отправлено: Samovar от 20 Июль 2019, 22:02:54
Редактирование полигональной сетки


Функции управления трехмерной геометрией полигональной сетки в CopperCube:
Примечание: Пока доступны только в редакторе и в приложениях для Mac OS X и Windows.

ccbGetSceneNodeMeshBufferCount(Узел) - Возвращает количество буферов в полигональной сетке узла сцены (один буфер соответствует геометрии с одним материалом).
ccbRemoveMeshBuffer(Узел, ИндексБуфераПолигональнойСетки) - Стирает буфер в полигональной сетке узла сцены.
ccbAddMeshBuffer(Узел) - Добавляет новый буфер в полигональную сетку узла сцены.

ccbGetMeshBufferVertexCount(Узел, ИндексБуфераПолигональнойСетки) - Возвращает количество вершин в буфере.
ccbGetMeshBufferIndexCount(Узел, ИндексБуфераПолигональнойСетки) - Возвращает количество индексов в буфере (индексами описываются треугольники, и их количество всегда должно быть кратно трём, то есть количество треугольников в буфере всегда будет равно количеству_индексов/3).

ccbAddMeshBufferIndex(Узел, ИндексБуфераПолигональнойСетки, ЗначениеИндекса) - Добавляет новое значение индекса в буфер.
ccbGetMeshBufferIndexValue(Узел, ИндексБуфераПолигональнойСетки, НомерИндекса) - Возвращает значение индекса.
ccbSetMeshBufferIndexValue(Узел, ИндексБуфераПолигональнойСетки, НомерИндекса, ЗначениеИндекса) - Изменяет значение индекса.

ccbAddMeshBufferVertex(Узел, ИндексБуфераПолигональнойСетки, ПозицияВершины) - Добавляет вершину в буфер.
ccbGetMeshBufferVertexPosition(Узел, ИндексБуфераПолигональнойСетки, ИндексВершины) - Возвращает 3D-позицию.
ccbSetMeshBufferVertexPosition(Узел, ИндексБуфераПолигональнойСетки, ИндексВершины, ПозицияВершины) - Устанавливает 3D-позицию вершины.

ccbGetMeshBufferVertexTextureCoord(Узел, ИндексБуфераПолигональнойСетки, ИндексВершины) - Возвращает текстурные координаты вершины.
ccbSetMeshBufferVertexTextureCoord(Узел, ИндексБуфераПолигональнойСетки, ИндексВершины, ТекстурныеКоординаты) - Устанавливает текстурные координаты вершины.

ccbGetMeshBufferVertexNormal(Узел, ИндексБуфераПолигональнойСетки, ИндексВершины) - Возвращает нормаль вершины.
ccbSetMeshBufferVertexNormal(Узел, ИндексБуфераПолигональнойСетки, ИндексВершины, ВекторНормали) - Устанавливает нормаль вершины.

ccbGetMeshBufferVertexColor(Узел, ИндексБуфераПолигональнойСетки, ИндексВершины) - Возвращает цвет вершины.
ccbSetMeshBufferVertexColor(Узел, ИндексБуфераПолигональнойСетки, ИндексВершины, ЦветВершины) - Устанавливает цвет вершины.

ccbUpdateSceneNodeBoundingBox(Узел) - Вычисляет новый габаритный контейнер для узла сцены. Это необходимо делать после изменения геометрии узла сцены.

Перечисленные выше функции предоставляют доступ ко всей статической трехмерной геометрии в редакторе и позволяют изменять ее. Работает это так: у каждого узла, который имеет трехмерную геометрию в СopperCube, есть трехмерная полигональная сетка, представляющая эту трехмерную геометрию. Трехмерная полигональная сетка состоит из нескольких буферов полигональной сетки, по одному буферу для каждого материала. Каждый буфер полигональной сетки состоит из нескольких вершин, определяющих трехмерное положение каждой вершины трехмерной геометрии, и нескольких индексов, содержащих порядковый номер вершины в буфере полигональной сетки и соединяющих эти вершины в треугольники. Количество добавляемых индексов в вашем скрипте должно быть всегда кратно трем, например, 0, 2, 1, образуют треугольник из первых трех индексов. Следующий треугольник добавляется по порядку, и описываются следующими тремя индексами буфера, и так далее.

Параметры:
Примеры:

Подсчет полигонов и материалов:
Код
var meshnode = editorGetSelectedSceneNode();
var bufferCount = ccbGetSceneNodeMeshBufferCount(meshnode);
if (bufferCount == 0)
  alert('The selected node has no 3D geometry.');
else
{
  var totalVertexCount = 0;
  var totalIndexCount = 0;
  for (var i=0; i<bufferCount; ++i)
  {
    totalVertexCount += ccbGetMeshBufferVertexCount(meshnode, i);
    totalIndexCount += ccbGetMeshBufferIndexCount(meshnode, i);
  }

  alert('The selected node has ' + (totalIndexCount/3) + ' polygons ' +
        totalVertexCount + ' vertices, and ' +
        bufferCount + ' materials.' );
}
Этот скрипт напечатает общее количество полигонов, вершин и материалов выделенного в редакторе узла, например: The selected node has 12 polygons 36 vertices, and 1 materials. (Выделенный узел имеет 12 полигонов, 36 вершин и 1 материал.)

Модификация 3D-сетки:
Код
var meshnode = editorGetSelectedSceneNode();
var bufferCount = ccbGetSceneNodeMeshBufferCount(meshnode);
if (bufferCount == 0)
  alert('The selected node has no 3D geometry.');
else
{
  for (var i=0; i<bufferCount; ++i)
  {
    var vertexcount = ccbGetMeshBufferVertexCount(meshnode, i);
    for (var v=0; v<vertexcount; ++v)
    {
       var pos = ccbGetMeshBufferVertexPosition(meshnode, i, v);
       
       pos.x *= 2;
       pos.y *= 2;
       pos.z *= 2;
       
       ccbSetMeshBufferVertexPosition(meshnode, i, v, pos);
    }
  } 
  ccbUpdateSceneNodeBoundingBox(meshnode);
}
Этот скрипт будет масштабировать все вершины выделенного в данный момент в редакторе узла на коэффициент 2. Примечание: Это действие отличается от установки значения масштаба узла, фактически оно будет перемещать все позиции вершин полигональной сетки узла.

Существует также урок о том, как Создавать 3D-геометрию с помощью JavaScript.



Другое


vector3d()
vector3d(x,y,z)

Класс для хранения 3-х координат с плавающей точкой: x, y и z.
Также содержит вспомогательные методы:
Примеры:
Код
var v = new vector3d(0,0,0);
print(v);
Печатает: (0, 0, 0)

Код
var v1 = new vector3d(10,0,0);
var v2 = new vector3d(0,20,0);
var v3 = v1.add(v2);

v3.normalize();
print(v3 + " Length:" + v3.getLength())
Печатает: (0.447214, 0.894427, 0) Length:1
 

Другие доступные процедуры (подробности смотрите в стандарте JavaScript):

Математические функции: Math.abs(x); Math.acos(x); Math.asin(x); Math.atan(x); Math.atan2(x, y); Math.ceil(x); Math.cos(x); Math.exp(x); Math.floor(x); Math.log(x); Math.pow(x, y); Math.random(); Math.round(), Math.sin(x); Math.sqrt(x); Math.tan(x);

Прочие: Все основные функции JavaScript, такие как функции даты, регулярные выражения, строки, массивы и т. д.

Название: Re: CopperCube
Отправлено: Samovar от 22 Июль 2019, 07:33:41
Программирование шейдеров в CopperCube

Начиная с версии 5, CopperCube поддерживает шейдеры для создания материалов и эффектов. Система не очень продвинута, но позволяет создавать базовые расширения. Этот раздел является небольшим обзором того, как это работает. Обратите внимание, что программировать шейдеры - дело не простое, и предполагается, что вы знакомы с этой сложной темой.

Шейдерная система в CopperCube
По сути, вы создаете шейдеры в CopperCube во время выполнения, с помощью JavaScript API, используя функции ccbCreateMaterial и ccbSetShaderConstant, а затем устанавливаете вновь созданный материал с помощью ccbSetSceneNodeMaterialProperty(). Шейдеры зависят от платформы, это означает, что вы должны писать их на HLSL для Windows/D3D9, на GLSL при использовании Windows/OpenGL или Mac/OpenGL и GLSL ES в WebGL. На некоторых платформах шейдеры не поддерживаются (см. ниже). Ниже вы найдете несколько примеров того, как использовать эту систему.

Специфичные ограничения для платформы
Для всех платформ существуют специфичные технические ограничения, которые вам необходимо знать:

Платформа
Шейдерный язык
Комментарии

Windows, D3D9
HLSL
всегда являются пиксельными и вершинными шейдерами версии 3.0.

Windows, D3D8   
-   
при использовании D3D8 шейдеры не поддерживаются

Windows и Mac OS X, OpenGL
GLSL   
могут не работать на очень старом оборудовании с устаревшими драйверами

WebGL
GLSL ES   
должны работать

Android   
GLSL ES   
пока не поддерживаются


Константы по умолчанию, установленные движком
Для вашего удобства движок устанавливает некоторые константы по умолчанию для вершинных шейдеров в Windows и Mac OS X, чтобы вы могли легко их использовать:
Для WebGL имеются подобные константы с другими именами:
Примеры кода
Вот несколько примеров шейдеров для начала. Обратите внимание, что только коды шейдеров в примерах отличаются от платформы к платформе, код создания материала всегда одинаков.

Примеры Windows / D3D9 / HLSL
Этот пример показывает простую комбинацию вершинного и пиксельного шейдеров. В вершинном шейдере указано, как преобразовать позиции вершин, чтобы они были правильно прорисованы, а фрагментный (пиксельный) шейдер немного осветляет цвета. Предполагается существование узла сцены с именем 'cubeMesh1'

Код
var vertexShader = 
"float4x4 mWorldViewProj;  // World * View * Projection \n" +
"float4x4 mInvWorld;       // Inverted world matrix       \n" +
"float4x4 mTransWorld;     // Transposed world matrix   \n" +
"                                          \n" +
"// Vertex shader output structure                  \n" +
"struct VS_OUTPUT                              \n" +
"{                                          \n" +
"   float4 Position   : POSITION;   // vertex position    \n" +
"   float4 Diffuse    : COLOR0;     // vertex diffuse    \n" +
"   float2 TexCoord   : TEXCOORD0;  // tex coords      \n" +
"};                                          \n" +
"                                          \n" +
"VS_OUTPUT main      ( in float4 vPosition : POSITION,   \n" +
"                      in float3 vNormal   : NORMAL,   \n" +
"                      float2 texCoord     : TEXCOORD0 )\n" +
"{                                          \n" +
"   VS_OUTPUT Output;                           \n" +
"                                          \n" +
"   // transform position to clip space             \n" +
"   Output.Position = mul(vPosition, mWorldViewProj);   \n" +
"                                          \n" +
"   // transformed normal would be this:            \n" +
"   float3 normal = mul(vNormal, mInvWorld);         \n" +
"                                          \n" +
"   // position in world coodinates   would be this:      \n" +
"   // float3 worldpos = mul(mTransWorld, vPosition);   \n" +
"                                          \n" +
"   Output.Diffuse = float4(1.0, 1.0, 1.0, 1.0);      \n" +
"   Output.TexCoord = texCoord;                     \n" +
"                                          \n" +
"   return Output;                              \n" +
"}                                          ";

var fragmentShader =
"struct PS_OUTPUT                        \n" +
"{                                    \n" +
"    float4 RGBColor : COLOR0;                  \n" +   
"};                                    \n" +
"                                    \n" +
"sampler2D tex0;                        \n" +
"                                    \n" +
"PS_OUTPUT main( float2 TexCoord : TEXCOORD0,   \n" +
"                float4 Position : POSITION,   \n" +
"                float4 Diffuse  : COLOR0 )    \n" +
"{                                     \n" +
"   PS_OUTPUT Output;                     \n" +
"   float4 col = tex2D( tex0, TexCoord );        \n" +
"   Output.RGBColor = Diffuse * col;         \n" +
"   Output.RGBColor *= 4.0;                  \n" +
"   return Output;                        \n" +
"}";

var newMaterial = ccbCreateMaterial(vertexShader, fragmentShader, 0, null);

var cube = ccbGetSceneNodeFromName('cubeMesh1');
ccbSetSceneNodeMaterialProperty(cube, 0, 'Type', newMaterial);

Этот пример является расширенной версией первого, использующего функцию ccbSetShaderConstant(), которая заставляет материал переходить от яркого к темному тону каждые полсекунды, устанавливая константу пиксельного шейдера, которая затем умножается в пиксельном шейдере на цвет каждого пикселя:

Код
var vertexShader = 
"float4x4 mWorldViewProj;  // World * View * Projection \n" +
"float4x4 mInvWorld;       // Inverted world matrix       \n" +
"float4x4 mTransWorld;     // Transposed world matrix   \n" +
"                                          \n" +
"// Vertex shader output structure                  \n" +
"struct VS_OUTPUT                              \n" +
"{                                          \n" +
"   float4 Position   : POSITION;   // vertex position    \n" +
"   float4 Diffuse    : COLOR0;     // vertex diffuse    \n" +
"   float2 TexCoord   : TEXCOORD0;  // tex coords      \n" +
"};                                          \n" +
"                                          \n" +
"VS_OUTPUT main      ( in float4 vPosition : POSITION,   \n" +
"                      in float3 vNormal   : NORMAL,   \n" +
"                      float2 texCoord     : TEXCOORD0 )\n" +
"{                                          \n" +
"   VS_OUTPUT Output;                           \n" +
"                                          \n" +
"   // transform position to clip space             \n" +
"   Output.Position = mul(vPosition, mWorldViewProj);   \n" +
"                                          \n" +
"   // transformed normal would be this:            \n" +
"   float3 normal = mul(vNormal, mInvWorld);         \n" +
"                                          \n" +
"   // position in world coodinates   would be this:      \n" +
"   // float3 worldpos = mul(mTransWorld, vPosition);   \n" +
"                                          \n" +
"   Output.Diffuse = float4(1.0, 1.0, 1.0, 1.0);      \n" +
"   Output.TexCoord = texCoord;                     \n" +
"                                          \n" +
"   return Output;                              \n" +
"}                                          ";

var fragmentShader =
"struct PS_OUTPUT                        \n" +
"{                                    \n" +
"    float4 RGBColor : COLOR0;                  \n" +   
"};                                    \n" +
"                                    \n" +
"float4 pulse;                           \n" +
"sampler2D tex0;                        \n" +
"                                    \n" +
"PS_OUTPUT main( float2 TexCoord : TEXCOORD0,   \n" +
"                float4 Position : POSITION,   \n" +
"                float4 Diffuse  : COLOR0 )    \n" +
"{                                     \n" +
"   PS_OUTPUT Output;                     \n" +
"   float4 col = tex2D( tex0, TexCoord );        \n" +
"   Output.RGBColor = pulse * col;            \n" +
"   return Output;                        \n" +
"}";

myShaderCallBack = function()
{
   var time = new Date().getTime();
   var pulse = (time % 500) / 500.0;
   ccbSetShaderConstant(2, 'pulse', pulse, pulse, 0, pulse);
}

var newMaterial = ccbCreateMaterial(vertexShader, fragmentShader, 0, myShaderCallBack);

var cube = ccbGetSceneNodeFromName('cubeMesh1');
ccbSetSceneNodeMaterialProperty(cube, 0, 'Type', newMaterial);

Примеры Windows и Mac OS X OpenGL / GLSL
Этот пример показывает простую комбинацию вершинного и пиксельного шейдеров. В вершинном шейдере указано, как преобразовать позиции вершин, чтобы они были правильно прорисованы, а фрагментный (пиксельный) шейдер немного осветляет цвета. Предполагается существование узла сцены с именем 'cubeMesh1':

Код
var vertexShader =                            
"uniform mat4 mWorldViewProj;                  \n" +
"uniform mat4 mInvWorld;                     \n" +
"uniform mat4 mTransWorld;                     \n" +
"                                       \n" +
"void main(void)                           \n" +
"{                                       \n" +
"   gl_Position = mWorldViewProj * gl_Vertex;      \n" +
"                                       \n" +
"   // normal would be this:                  \n" +
"   vec4 normal = vec4(gl_Normal, 0.0);            \n" +
"   normal = mInvWorld * normal;               \n" +
"   normal = normalize(normal);                  \n" +
"                                       \n" +
"   // world position would be this:            \n" +
"   vec4 worldpos = gl_Vertex * mTransWorld;      \n" +
"                                       \n" +
"   gl_FrontColor = gl_BackColor = vec4(1.0, 1.0, 1.0, 0.0);   \n" +
"                                       \n" +
"   gl_TexCoord[0] = gl_MultiTexCoord0;            \n" +
"}";

var fragmentShader =
"uniform sampler2D myTexture;                     \n" +
"                                          \n" +
"void main (void)                              \n" +
"{                                          \n" +
"    vec4 col = texture2D(myTexture, vec2(gl_TexCoord[0]));\n" +
"    col *= gl_Color;                           \n" +
"    gl_FragColor = col;                        \n" +
"}";

var newMaterial = ccbCreateMaterial(vertexShader, fragmentShader, 0, null);

var cube = ccbGetSceneNodeFromName('cubeMesh1');
ccbSetSceneNodeMaterialProperty(cube, 0, 'Type', newMaterial);

Этот пример является расширенной версией первого, использующего функцию ccbSetShaderConstant(), которая заставляет материал переходить от яркого к темному тону каждые полсекунды, устанавливая константу пиксельного шейдера, которая затем умножается в пиксельном шейдере на цвет каждого пикселя:

Код
var vertexShader =                            
"uniform mat4 mWorldViewProj;                  \n" +
"uniform mat4 mInvWorld;                     \n" +
"uniform mat4 mTransWorld;                     \n" +
"                                       \n" +
"void main(void)                           \n" +
"{                                       \n" +
"   gl_Position = mWorldViewProj * gl_Vertex;      \n" +
"                                       \n" +
"   // normal would be this:                  \n" +
"   vec4 normal = vec4(gl_Normal, 0.0);            \n" +
"   normal = mInvWorld * normal;               \n" +
"   normal = normalize(normal);                  \n" +
"                                       \n" +
"   // world position would be this:            \n" +
"   vec4 worldpos = gl_Vertex * mTransWorld;      \n" +
"                                       \n" +
"   gl_FrontColor = gl_BackColor = vec4(1.0, 1.0, 1.0, 0.0);   \n" +
"                                       \n" +
"   gl_TexCoord[0] = gl_MultiTexCoord0;            \n" +
"}";

var fragmentShader =
"uniform sampler2D myTexture;                     \n" +
"uniform vec4 pulse;                           \n" +
"                                          \n" +
"void main (void)                              \n" +
"{                                          \n" +
"    vec4 col = texture2D(myTexture, vec2(gl_TexCoord[0]));\n" +
"    col *= gl_Color;                           \n" +
"    gl_FragColor = col * pulse;                  \n" +
"}";

myShaderCallBack = function()
{
   var time = new Date().getTime();
   var pulse = (time % 500) / 500.0;
   ccbSetShaderConstant(2, 'pulse', pulse, pulse, 0, pulse);
}

var newMaterial = ccbCreateMaterial(vertexShader, fragmentShader, 0, myShaderCallBack);

var cube = ccbGetSceneNodeFromName('cubeMesh1');
ccbSetSceneNodeMaterialProperty(cube, 0, 'Type', newMaterial);

Примеры WebGL / GLSL
Этот пример показывает простую комбинацию вершинного и пиксельного шейдеров. В вершинном шейдере указано, как преобразовать позиции вершин, чтобы они были правильно прорисованы, а фрагментный (пиксельный) шейдер немного осветляет цвета. Предполагается существование узла сцены с именем 'cubeMesh1':

Код
var vertexShader =                            
"uniform mat4 worldviewproj;                        \n" +
"                                             \n" +
"attribute vec4 vPosition;                           \n" +
"attribute vec4 vNormal;                           \n" +
"attribute vec4 vColor;                              \n" +
"attribute vec2 vTexCoord1;                           \n" +
"attribute vec2 vTexCoord2;                           \n" +
"                                             \n" +
"varying vec4 v_color;                              \n" +
"varying vec2 v_texCoord1;                           \n" +
"varying vec2 v_texCoord2;                           \n" +
"                                             \n" +
"void main()                                    \n" +
"{                                             \n" +
"   v_color = vColor;                              \n" +
"   gl_Position = worldviewproj * vPosition;            \n" +
"   v_texCoord1 = vTexCoord1.st;                     \n" +
"   v_texCoord2 = vTexCoord2.st;                     \n" +
"}                                             ";

var fragmentShader =
"uniform sampler2D texture1;                        \n" +
"uniform sampler2D texture2;                        \n" +
"                                             \n" +
"varying vec2 v_texCoord1;                           \n" +
"varying vec2 v_texCoord2;                           \n" +
"                                             \n" +
"void main()                                    \n" +
"{                                             \n" +
"   vec2 texCoord = vec2(v_texCoord1.s, v_texCoord1.t);      \n" +
"   gl_FragColor = texture2D(texture1, texCoord) * 2.0;      \n" +
"}                                             \n";

var newMaterial = ccbCreateMaterial(vertexShader, fragmentShader, 0, null);

var cube = ccbGetSceneNodeFromName('cubeMesh1');
ccbSetSceneNodeMaterialProperty(cube, 0, 'Type', newMaterial);

Этот пример является расширенной версией первого, использующего функцию ccbSetShaderConstant(), которая заставляет материал переходить от яркого к темному тону каждые полсекунды, устанавливая константу пиксельного шейдера, которая затем умножается в пиксельном шейдере на цвет каждого пикселя:

Код
var vertexShader =                            
"uniform mat4 worldviewproj;                        \n" +
"                                             \n" +
"attribute vec4 vPosition;                           \n" +
"attribute vec4 vNormal;                           \n" +
"attribute vec4 vColor;                              \n" +
"attribute vec2 vTexCoord1;                           \n" +
"attribute vec2 vTexCoord2;                           \n" +
"                                             \n" +
"varying vec4 v_color;                              \n" +
"varying vec2 v_texCoord1;                           \n" +
"varying vec2 v_texCoord2;                           \n" +
"                                             \n" +
"void main()                                    \n" +
"{                                             \n" +
"   v_color = vColor;                              \n" +
"   gl_Position = worldviewproj * vPosition;            \n" +
"   v_texCoord1 = vTexCoord1.st;                     \n" +
"   v_texCoord2 = vTexCoord2.st;                     \n" +
"}                                             ";

var fragmentShader =
"uniform sampler2D texture1;                        \n" +
"uniform sampler2D texture2;                        \n" +
"uniform vec4 pulse;                              \n" +
"                                             \n" +
"varying vec2 v_texCoord1;                           \n" +
"varying vec2 v_texCoord2;                           \n" +
"                                             \n" +
"void main()                                    \n" +
"{                                             \n" +
"   vec2 texCoord = vec2(v_texCoord1.s, v_texCoord1.t);      \n" +
"   gl_FragColor = texture2D(texture1, texCoord) * pulse;   \n" +
"}                                             \n";

myShaderCallBack = function()
{
   var time = new Date().getTime();
   var pulse = (time % 500) / 500.0;
   ccbSetShaderConstant(2, 'pulse', pulse, pulse, 0, pulse);
}

var newMaterial = ccbCreateMaterial(vertexShader, fragmentShader, 0, myShaderCallBack);

var cube = ccbGetSceneNodeFromName('cubeMesh1');
ccbSetSceneNodeMaterialProperty(cube, 0, 'Type', newMaterial);
Название: Re: CopperCube
Отправлено: Samovar от 22 Июль 2019, 11:55:06
Платформа WebGL (.html)
При создании приложений WebGL/JavaScript .html в CopperCube, необходимо помнить о некоторых вещах:
Поддерживаются WebGL 1 и WebGL 2. Когда браузер не поддерживает WebGL 2, используется откат к WebGL 1.
Еще существует несколько старых браузеров, которые не поддерживают WebGL. Смотрите ниже информацию об этом.
Некоторые браузеры запускают контент WebGL, сгенерированный в CopperCube, только когда он поступает с веб-сервера (а не с локального диска). CopperCube сообщит вам, когда это произойдёт, и что с этим делать.


Переключение в полноэкранный режим и блокировка указателя мыши
Начиная с версии 4.5, CopperCube поддерживает переключение вашего WebGL приложения  в полноэкранный режим и, дополнительно, блокировку курсора мыши для лучшей работы камер First Person Shooter (Камера в стиле шутера от первого лица). Для этого добавьте в приложение поведение When a key is pressed do something (Когда нажата клавиша, сделать что-либо) или 2D-наложение с надписью When clicked on this do something (При нажатии сделать что-либо), а затем добавьте в него дополнительное действие Switch to Fullscreen (Переключиться в полноэкранный режим). Вы можете скачать это дополнительное действие  с домашней страницы CopperCube.

Таким образом, вам нужно вручную переключаться в полноэкранный режим, поскольку в WebGL есть ограничение безопасности, которое позволяет приложению переключаться в полноэкранный режим только в том случае, если пользователь кликает мышью или нажимает кнопку.

В неполноэкранных приложениях WebGL, если это необходимо, можете использовать автоматическую блокировку мыши для камер FPS (от первого лица). Эта опция находится в настройках публикации WebGL


Поддержка браузера
Проекты CopperCube, опубликованные в виде WebGL/JavaScript, имеют одно большое преимущество: им не требуется плагина, и они запускаются непосредственно в браузере.
Актуальный список браузеров поддерживающих WebGL, смотрите на сайте в разделе поддержки браузерами CopperLicht.


Скрытие отладочного текста
Проекты CopperCube WebGL иногда печатают информационный текст под холстом, например, когда загрузка текстуры не удалась или возникла проблема с созданием шейдера. Конечно, для вашего готового продукта вы не захотите, чтобы появлялся этот текст. Текст помечен CSS-классом "cldebug", чтобы вы могли легко влиять на его внешний вид. Если вы хотите, чтобы он был скрыт, просто добавьте правило CSS, например, "div.cldebug {display: none;}", в заголовок вашего .HTML файла:
Код
<html>
<head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
   <script type="text/javascript" src="copperlichtdata/copperlicht.js"></script>
   <style type="text/css">
      div.cldebug { display: none; }
   </style>
</head>
<body>
...


Программирование на JavaScript
Помимо действий и поведений, вы можете сделать ваши WebGL-сцены более интерактивными, используя встроенный язык сценариев JavaScript. Посмотрите Обзор программирования сценариев (написания скриптов) в CopperCube.

Кроме того, существует второй, более продвинутый способ написания сценария для вашего приложения WebGL, который работает только для WebGL, а не для других целевых платформ: CopperCube использует свой собственный JavaScript-движок на основе WebGL 3D с именем 'CopperLicht'. Вы можете бесплатно загрузить CopperLicht SDK. Он содержит подробную документацию и несколько примеров и уроков, показывающих, как расширить 3D-сцены CopperCube с помощью JavaScript:

Перейти на страницу CopperLicht.


Проблемы с запуском ваших  WebGL проектов в Google Chrome
Если вы хотите запускать свои WebGL проекты с локального диска и с помощью браузера Google Chrome, то вы можете получить сообщение об ошибке, типа:

Error: Could not load file 'copperlichtdata/coppercube.ccbjs'
(Ошибка: не удалось загрузить файл 'copperlichtdata/coppercube.ccbjs')

Обычно это вызвано ограничением безопасности, из-за которого Chrome не хочет читать файлы с вашего диска. Есть четыре способа обойти это:
Название: Re: CopperCube
Отправлено: Samovar от 22 Июль 2019, 16:57:12
Платформа MacOS (.app)
Вы можете создавать приложения Mac OS X .app с помощью CopperCube. Из-за ограничения 3D-движка в Mac OS X, эта целевая платформа недостаток: типы шрифтов для текста в 2D-наложениях игнорируются. Если вам нужен собственный шрифт в этой целевой платформе, то создайте на его базе текстуру изображения и используйте её на 2D-наложении. В остальном, эта целевая платформа является полностью функциональной.
Но есть также некоторые специальные функции:


Аргументы командной строки
При запуске каждого созданного файла .app, можно использовать несколько аргументов командной строки:
-windowed Принудительно запускает приложение в оконном режиме вместо полноэкранного режима.
-debug Запускает приложение в режиме отладки. Делает консоль отладки видимой, например, когда происходит ошибка или среда сценариев печатает строку текста.
-script:<файл> Использует данный файл в качестве основного скрипта (сценария), вместо файла сценария, скомпилированного внутри приложения.

Примеры:
Следующая командная строка запустит ваше приложение в оконном режиме:

yourapplication.app/Contents/MacOS/yourapplication -windowed

Следующая команда будет использовать файл сценария «myscript.js» вместо скомпилированного внутри приложения, и покажет консоль отладки, если какая-либо строка текста будет напечатана в вашем сценарии. Это полезно, например, для разработки файла сценария без редактора CopperCube.

yourapplication.app/Contents/MacOS/yourapplication -debug -script:myscript.js


Сценарии на JavaScript
Вы можете делать свои сцены CopperCube 3D Windows .exe более интерактивными, используя встроенный сценарный язык программирования JavaScript. Посмотрите Обзор программирования сценариев , что бы использовать эту возможность.

Кроме того, для этой целевой платформы вы можете использовать отдельный файл скрипта при разработке.
Если вы хотите использовать эту возможность, то выполните следующие действия:
Сохраните 3D-сцену в файл где-нибудь на жестком диске. Например, в файл с именем test.ccb
Создайте файл с именем вашего файла CopperCube, но с расширением «.js», например test.js
Отредактируйте этот файл с помощью вашего любимого текстового редактора (рекомендуется: Notepad++, он поддерживает подсветку синтаксиса JavaScript). При публикации вашего файла как приложения Windows .exe, CopperCube включит этот сценарий в файл .exe и будет использовать его в качестве основного сценария.
Пример:
Запишите этот текст в свой файл .js:
Код
print("Hello World!");
При тестировании вашей 3D-сцены из редактора CopperCube будет напечатан текст "Hello World!" в консоли отладки.

Совет по разработке:
Если вы предпочитаете разрабатывать сценарий без запуска редактора CopperCube, вы можете сделать это с помощью аргументов командной строки -debug и -script: Смотрите раздел Аргументы командной строки.

Ссылки и примеры
Обзор программирования сценариев с описанием того, как использовать сценарии для всех целевых платформ.
В этой документации имеется исчерпывающая справка по сценариям JavaScript API


Исходный код
Если вы хотите расширить приложение с помощью специальных пользовательских функций, вы можете сделать это, скомпилировав приложение самостоятельно и запрограммировав свои собственные дополнения. Вы можете получить исходный код, если вы являетесь владельцем CopperCube Studio Edition: В редакторе нажмите 'Help -> About', а затем кнопку "Download C++ Source" («Справка -> О программе», а затем кнопку «Загрузить исходный код C++»).
Код является проектом Xcode. Он основан на 3D-движке с открытым исходным кодом Irrlicht и его довольно легко расширить. Краткая документация о том, как собрать пакет, может быть найдена в корне с именем document.txt.
Название: Re: CopperCube
Отправлено: Samovar от 24 Июль 2019, 02:59:13
Платформа Android (.apk)

C помощью CopperCube вы можете создавать приложения для мобильных устройств с операционной системой Google Android. При публикации в эту целевую платформу, редактор сгенерирует файл с расширением имени файла .apk, который будет являться готовым приложением для Android. Вы можете перенести его на свое устройство, например, загрузив его из любой точки Интернета или нажав кнопку в CopperCube 'Install on Device'  (Установить на устройстве), а затем запустить его. Так же, вы можете продавать его, опубликовав в магазине Google Play.


Настройка CopperCube для создания приложений Android
Если вы хотите опубликовать созданные  вами с помощью CopperCube 3D-сцены в качестве приложения Android, то вам необходимо предварительно загрузить и установить некоторые дополнительные пакеты программного обеспечения. Чтобы сделать это, выполните следующие шаги:

Загрузка и установка Android SDK
(https://www.ambiera.com/coppercube/doc/images/androidskmanager22.png)

Включение параметров разработчика на вашем Android-устройстве
Если вы хотите, чтобы CopperCube мог устанавливать ваше приложение на вашем Android-устройстве, вам нужно включить на нем опции разработчика. Установите для него большой флажок, а также установите флажок "USB Debugging" (Отладка по USB). Если у вас нет записи "Developer Options" (Параметры разработчика) в ваших настройках, вам нужно перейти к "About device" (Об устройстве) и коснуться записи "build number" (Номер сборки) семь раз, чтобы разблокировать опции разработчика.

Настройка CopperCube для использования Android SDK
Нужно сообщить CopperCube, где вы установили SDK для создания пакетов Android.
(https://www.ambiera.com/coppercube/doc/images/androidoptions.png)

Вот и все, теперь вы можете создавать приложения для Android с помощью CopperCube.
Обратите внимание, что в разделе Tools -> Publishing Settings -> Android (Инструменты -> Параметры публикации -> Android) вы найдете множество вариантов создания приложений, таких как файл значка, имя пакета, номер версии и т. д. Кроме того, убедитесь, что файл присутствует хранилище ключей, созданное вами на последнем шаге, это очень важно! Сделайте резервную копию файла, если вы планируете опубликовать или продать свое приложение для Android. Этот ключ необходим для создания обновлений вашего приложения. Ключ не может быть заново сгенерирован. Вам нужен этот ключ, даже если вы планируете создать несколько приложений для Android.


Системные требования
Созданные CopperCube приложения для Android работают на любой системе Android начиная с версии 2.2 с поддержкой OpenGL ES2. Но поскольку существуют очень быстрые, а также очень медленные устройства, то производительность вашего приложения может отличаться на разных устройствах. Для достаточной скорости работы рекомендуются, минимум, устройства Android с архитектурой ARMv7. Если вы используете скелетную анимацию в своем приложении, то производительность может быть очень низкой, когда устройство не поддерживает её.

Также обратите внимание, что устройства Android, как правило, гораздо менее быстрые, чем ваш обычный ПК или Mac. Обязательно используйте очень простую трехмерную геометрию, скелетную анимацию с очень небольшим количеством костей и самое главное: всего несколько текстур с очень низким разрешением. Если вашему Android-приложению не хватит памяти, а это, вероятно, произойдёт при использовании большого количества текстур в высоком разрешении, то это приведёт к сбою.


Программируемые сценарии (скрипты)
Приложения Android поддерживают те же функции JavaScript, что и другие целевые платформы, а также действие 'Execute Javascript' (Выполнить Javascript). Посмотрите Обзор программирования сценариев, чтоб знать, как использовать эту возможность.

Так же смотрите Справочник по JavaScript, где приведён список всех доступных функций.


Клавиша меню
Для  вашего приложения может быть полезно реагировать на нажатие пользователем клавиши 'Menu' (Меню) на устройстве Android. Вы можете сделать это в CopperCube, используя поведение "When a key is pressed do something" (При нажатии клавиши сделать что-либо) для любого трехмерного объекта или корневого объекта сцены, и выбрав клавишу  "App Menu key" (Клавиша меню приложения).


Звук
Для воспроизведения звуков на целевой платформе Android, рекомендуется использовать файлы .ogg.


Исходный код
Если вы хотите расширить приложение Android с помощью специальных функций Android, то вы можете сделать это, скомпилировав приложение для Android, и запрограммировав свои собственные дополнения. Вы можете получить доступ к исходному коду, если у вас есть версия CopperCube Studio Edition: В редакторе нажмите "Help -> About" (Справка -> О программе), а затем нажмите кнопку "Download Android Source" (Загрузить исходный код Android).
Код представляет собой проект Eclipse, который можно скомпилировать с помощью Android SDK и плагина Eclipse Android Development. Краткая документация о том, как собрать пакет, может быть найдена в корне с именем document.txt.
Название: Re: CopperCube
Отправлено: Striver от 24 Июль 2019, 18:22:53
ccbCreateMaterial(ВершинныйШейдер, ФрагментныйШейдер, ТипОсновногоМатериала, Отклик)
ccbSetShaderConstant(Тип, Имя, Значение1, Значение2, Значение3, Значение4)

Цитировать
Функция возвращает уникальный идентификатор материала, который вы можете использовать для замены материала у любого узла сцены, на ваш новый материал, с помощью ccbSetSceneNodeMaterialProperty(). Возвращает -1, если произошла ошибка.
Функция возвращает уникальный идентификатор материала, который вы можете использовать для замены материала любого узла сцены на ваш новый материал, с помощью функции ccbSetSceneNodeMaterialProperty(). Возвращает -1, если произошла ошибка.

ccbAICommand(Узел, Команда, Параметр)
Цитировать
Отменяет текущее действие актёра, которое он выполняет (стрельба, ходьба и т. д.) и станет ничего не делать, или начнет следующее действие, которое имеет смысл в текущей ситуации (например, нападение на ближайшего врага).
Отменяет текущее действие актёра, которое он выполняет (стрельба, ходьба и т. д.), после чего он перестанет что-либо делать или начнет следующее действие, которое имеет смысл в текущей ситуации (например, нападение на ближайшего врага).

ccbSaveScreenshot(ИмяФайлаИзображения)
Цитировать
Делает снимок экрана: сохраняет текущее содержимое экрана в файле изображения на диск.
Делает снимок экрана: сохраняет текущее содержимое экрана в графический файл на диске.
Название: Только в редакторе
Отправлено: Striver от 24 Июль 2019, 18:34:45
prompt(Текст, РедактируемыйТекст)
Цитировать
Показывает текст сообщения "Please enter a text" в модальном окне и дополнительном окне редактирования.
мне Яндекс тоже так перевёл, но подозреваю, что на самом деле:
Показывает в модальном окне текст сообщения "Please enter a text" и дополнительное поле редактирования.

editorGetSelectedSceneNode()
Цитировать
Возвращает текущий выделенный сцены или 0, если ничего не выделено.
Возвращает текущий выделенный узел сцены или 0, если ничего не выделено.

editorGetFileNameFromDialog()
editorGetFileNameFromDialog(Сообщение)
editorGetFileNameFromDialog(Сообщение, РасширенияФайлов)
editorGetFileNameFromDialog(Сообщение, РасширенияФайлов, ЭтоДиалогОткрытияФайла)

Цитировать
Строка расширения файла должна быть в используемом формате wxWidgets, например "BMP files (*.bmp)|*.bmp|GIF files (*.gif)|*.gif" или "*.mesh;*.xml"
Строка с расширением файла должна быть в формате, применяемом wxWidgets, например "BMP files (*.bmp)|*.bmp|GIF files (*.gif)|*.gif" или "*.mesh;*.xml"
Название: Re: CopperCube
Отправлено: Striver от 24 Июль 2019, 21:56:44
Редактирование полигональной сетки
Цитировать
Следующий треугольник добавляется по порядку, и описываются следующими тремя индексами буфера, и так далее.
Следующий треугольник добавляется по порядку, и описывается следующими тремя индексами буфера, и так далее.

Цитировать
Без знаковое целое число начиная с нуля.
Беззнаковое целое число, начиная с нуля.
3 раза.

Другое
Цитировать
normalize(): Для создания вектора длинной=1 (нормализация вектора)
normalize(): Для создания вектора длинной, равной 1 (нормализация вектора)
Название: Программирование шейдеров в CopperCube
Отправлено: Striver от 24 Июль 2019, 22:05:25
Программирование шейдеров в CopperCube

Проблем не обнаружено...
Название: Re: CopperCube
Отправлено: Samovar от 24 Июль 2019, 22:36:13
Спасибо, Striver! Всё поправлю.
В принципе, это  всё. Официальная справка (Лицензии не переводил, и не считаю это нужным, ибо не юрист, т.к там нужна точная юридическая терминология при переводе их на русский), как она поставляется с текущей версией CopperCube 6.0.2, переведена на русский, хотя есть куча дополнительной инфы (даже внутри справки, просто на неё нет ссылок, т.к. поддержка Flash и Action Script устарела для текущей версии конструктора) - ... Жду твоих правок остального. Затем выложу html-справку в архиве. А потом буду её обновлять дополнительными темами (описанием дополнительных проведений и действий с сайта, плагинов для редактора, и переводом сторонних дополнительных уроков).
Название: Платформа WebGL (.html)
Отправлено: Striver от 24 Июль 2019, 22:46:06
Платформа WebGL (.html)
Цитировать
При создании приложений WebGL/JavaScript .html в CopperCube, необходимо помнить о некоторых вещах:
При создании приложений WebGL/JavaScript .html в CopperCube необходимо помнить о некоторых вещах:

Цитировать
Для этого добавьте в приложение поведение When a key is pressed do something (Когда нажата клавиша, сделать что-либо) или 2D-наложение с надписью When clicked on this do something (При нажатии сделать что-либо), а затем добавьте в него дополнительное действие Switch to Fullscreen (Переключиться в полноэкранный режим).
Для этого добавьте в приложение поведение When a key is pressed do something (Когда нажата клавиша, сделать что-либо) или 2D-наложение с поведением When clicked on this do something (При нажатии сделать что-либо), а затем добавьте в него дополнительное действие Switch to Fullscreen (Переключиться в полноэкранный режим).

Цитировать
Актуальный список браузеров поддерживающих WebGL, смотрите на сайте в разделе поддержки браузерами CopperLicht.
Актуальный список браузеров, поддерживающих WebGL, смотрите на сайте в разделе поддержки браузерами CopperLicht.

Цитировать
Конечно, для вашего готового продукта вы не захотите, чтобы появлялся этот текст.
Конечно, вам не хотелось бы, чтобы этот текст появлялся в вашем готовом продукте.

Цитировать
Если вы хотите запускать свои WebGL проекты с локального диска и с помощью браузера Google Chrome, то вы можете получить сообщение об ошибке, типа:
Если вы хотите запускать свои WebGL проекты с локального диска в браузере Google Chrome, то вы можете получить сообщение об ошибке, типа:

Цитировать
Обходной путь 2: Используйте другой браузер, например, Firefox 4.
откуда ты взял четвёрку? Нет её в оригинале.
Обходной путь 2: Используйте другой браузер, например, Firefox.

Цитировать
Теперь, когда вы запустить браузер из CopperСube , чтобы отобразить ваш проект, просто скопируйте из него URL-адрес, а затем закройте браузер, и откройте его вновь, используя измененный ярлык, и вставьте URL-адрес в браузер.
Теперь, когда вам понадобится запустить ваш проект CopperСube в браузере, просто скопируйте из него URL-адрес, а затем закройте браузер, и откройте его вновь, используя измененный ярлык, и вставьте URL-адрес в браузер.
Название: Платформа MacOS (.app)
Отправлено: Striver от 24 Июль 2019, 22:57:26
Платформа MacOS (.app)
Цитировать
Из-за ограничения 3D-движка в Mac OS X, эта целевая платформа недостаток: типы шрифтов для текста в 2D-наложениях игнорируются.
Из-за ограничения 3D-движка в Mac OS X, эта целевая платформа имеет недостаток: типы шрифтов для текста в 2D-наложениях игнорируются.

Сценарии на JavaScript
Цитировать
Вы можете делать свои сцены CopperCube 3D Windows .exe более интерактивными, используя встроенный сценарный язык программирования JavaScript.
В оригинальном тексте так и есть, но, понятно, что они с описания винды скопипастили и даже не пытались задумываться... И так про весь этот подраздел, там дальше про Notepad++ пишут, сомневаюсь, что в маке он так просто запустится.
Название: Платформа Android (.apk)
Отправлено: Striver от 24 Июль 2019, 23:08:21
Платформа Android (.apk)
Цитировать
Обратите внимание, что в разделе Tools -> Publishing Settings -> Android (Инструменты -> Параметры публикации -> Android) вы найдете множество вариантов создания приложений, таких как файл значка, имя пакета, номер версии и т. д.
Обратите внимание, что в разделе Tools -> Publishing Settings -> Android (Инструменты -> Параметры публикации -> Android) вы найдете множество параметров приложения, таких как файл значка, имя пакета, номер версии и т. д.

Цитировать
Кроме того, убедитесь, что файл присутствует хранилище ключей, созданное вами на последнем шаге, это очень важно!
Кроме того, убедитесь, что присутствует файл хранилища ключей, созданного вами на последнем шаге, это очень важно!

Цитировать
Вам нужен этот ключ, даже если вы планируете создать несколько приложений для Android.
Вам нужен только один ключ, даже если вы планируете создать несколько приложений для Android.
Название: Re: CopperCube
Отправлено: Striver от 24 Июль 2019, 23:10:17
Цитировать
В принципе, это  всё.
А раздел про винду уже был что-ли?
Название: Re: CopperCube
Отправлено: Samovar от 24 Июль 2019, 23:16:05
Цитировать
В принципе, это  всё.
А раздел про винду уже был что-ли?
Да, был давно...http://blender-3d.ru/forum/index.php/topic,2314.msg34738.html#msg34738


Спасибо тебе неимоверное за помощь, ещё раз, Striver!
Поправлю всё, завтра выложу архив...
Название: Re: CopperCube
Отправлено: Striver от 25 Июль 2019, 08:50:23
Блин, вот я двоечник...

Редактирование полигональной сетки
Цитировать
normalize(): Для создания вектора длинной, равной 1 (нормализация вектора)
normalize(): Для создания вектора с длиной, равной 1 (нормализация вектора)
Название: Re: CopperCube
Отправлено: Samovar от 26 Июль 2019, 12:43:38
Звиняйте за задержку. "Завтра" у меня вчера получилось пьяное и, соответственно, скандальное.  :)  Не стесняйтесь, пишите об ошибках. Поправлю и перезалью.

Справка в ZIP архиве. Распакуйте и замените папку doc, там где у вас установлен CopperCube. Или распакуйте куда-нибудь, и откройте файл index.html в вашем браузере.
https://yadi.sk/d/VxdlJ3l_q24aHA


Далее в планах добавление новых разделов потихоньку:

Дополнительные уроки
Попутно в планах, перевести справку к врапперу на базе Irrlicht 1.7.2 для Freebasic (Clady3D) https://www.freebasic.net/forum/viewtopic.php?t=18162 или ищите тут http://users.freebasic-portal.de/freebasicru/download.html
Страница со скриншотами: http://users.freebasic-portal.de/freebasicru/glade3d.html
Для этого создам новую тему.

Название: Re: CopperCube
Отправлено: Samovar от 27 Июль 2019, 12:35:12
ЧаВО по CopperCube

Часто задаваемые вопросы по CopperCube и ответы на них:


CopperCube действительно бесплатен?
Да! CopperCube бесплатен. Просто скачайте его, и создавайте игры, приложения и продавайте их, разместите на своем веб-сайте и делайте с ними всё, что захотите. Для того чтобы поддерживать дальнейшее развитие CopperCube, существуют также две версии (Professional и Studio Edition), которые вы можете купить, если захотите. В них вы получаете несколько дополнительных функций (эффекты постобработки и воспроизведение видео). Более подробный обзор смотрите на странице сравнения изданий.


В чем разница между CopperCube и Unreal / Unity / другим 3D-движком?
CopperCube очень, очень прост в использовании. 3D-движки, как правило, очень трудно освоить и использовать. CopperCube отличается простотой и имеет очень простой интерфейс, с помощью которого вы все еще легко можете создавать крутые, сложные игры и полезные приложения.

CopperCube также, вероятно, лучший 3D-движок, если вы хотите использовать WebGL. Созданные с помощью CopperCube WebGL-игры меньше в объёме, загружаются и работают быстрее, чем в большинстве других  WebGL 3D-движков, а код имеет 100% открытость (подробности смотрите здесь).

Смотрите список возможностей и уникальных свойств CopperCube.


Могу ли я продавать игры, которые я создаю с помощью CopperCube?
Да, вы можете продавать любое ваше приложение или игру, которые вы создали с помощью CopperCube. На любом сайте, в Steam, в любом онлайн магазине приложений или как вам угодно. Независимо от того, создали ли вы свою игру или приложение в бесплатной или профессиональной версии CopperCube. Все, что вы создаете с помощью CopperCube, принадлежит вам, и вы можете делать с ним все, что захотите.


Какие игры были созданы с помощью CopperCube?
Смотрите список игр, созданных с помощью CopperCube.


Могу ли я создавать интерактивные архитектурные визуализации с помощью CopperCube?
Да, можете. CopperCube имеет встроенную систему столкновений, и вы даже можете подниматься по лестницам, используя её, и для этого не нужно ничего программировать.


Возможно ли создать трехмерную комнату с объектами, которые при нажатии открывают веб-сайты, скачивают PDF-файлы и т.д. с помощью CopperCube?
Да, именно для этого и создан CopperCube. Вам даже не нужно ничего программировать. Просто добавьте поведения и действия к необходимым объектам в редакторе CopperCube. Для этого выберите объект, который вы хотите, чтобы пользователи могли нажимать кнопкой мыши, выберите вкладку  'Behaviors' (Поведения) и кликните символ '+' для добавления нового поведения. Выберите  'Behaviors Triggered by Events -> When clicked on this do something' (Поведения вызываемые событиями -> При нажатии сделать что-либо). И в поле 'Action' (Действие) этого поведения выберите то, что должно произойти, например 'Special -> Open a Website' (Специальное -> Открыть веб-сайт).


Какая версия Android требуется для публикации на целевой платформе Android с помощью CopperCube?
Когда вы публикуете свой проект, как приложение Android с помощью CopperCube, то оно будет работать на тех устройствах Android, которые поддерживают OpenGL ES2 (большинство из них это умеют), и на Android версии 2.2 или новее. В настоящее время большинство всех устройств Android поддерживают эти спецификации, поэтому ваше приложение будет работать на большинстве из них.


Доступны ли образовательные лицензии для CopperCube?
Мы предлагаем специальные скидки для школ, студентов и учебных заведений. Просто свяжитесь с нами, и предоставьте нам информацию о количестве и типах необходимых вам лицензий.


У меня уже есть лицензия CopperCube, но я хочу перейти на более новую версию редактора или профессиональную версию.
Если вы используете CopperCube 5 и хотите обновить его до CopperCube 6, то воспользуйтесь формой обновления лицензии. Вы получите скидку 40%.


Где взять исходный код CopperCube?
Код WebGL CopperCube является открытым исходным кодом. Просто скачайте его и используйте.
Исходный код клиента для Android, Windows / Mac поставляется вместе с CopperCube Studio Edition.

...
Название: ЧаВО по CopperCube
Отправлено: Striver от 27 Июль 2019, 18:29:12
ЧаВО по CopperCube
Цитировать
Для того чтобы поддерживать дальнейшее развитие CopperCube, существуют также две версии (Professional и Studio Edition), которые вы можете купить, если захотите.
Чтобы поддерживать дальнейшее развитие CopperCube, существуют также две версии (Professional и Studio Edition), которые вы можете купить, если захотите.
Сначала хотел просто запятую после "Для того" вставить, но потом подумалось, что эти два слова вообще лишние.

Цитировать
Когда вы публикуете свой проект, как приложение Android с помощью CopperCube, то оно будет работать на тех устройствах Android, которые поддерживают OpenGL ES2 (большинство из них это умеют), и на Android версии 2.2 или новее.
Когда вы с помощью CopperCube публикуете свой проект в виде приложения Android, то оно будет работать на тех Android-устройствах, которые поддерживают OpenGL ES2 (большинство из них это умеют), и на Android версии 2.2 или новее.

Название: Re: CopperCube
Отправлено: Striver от 27 Июль 2019, 18:47:12
Самовар, офигенную работу проделал, спасибо большое!  :)
Название: Re: CopperCube
Отправлено: Samovar от 27 Июль 2019, 19:13:48
Самовар, офигенную работу проделал, спасибо большое!  :)
Спасибо, Striver! Это, во многом, благодаря тебе. И всё было бы гораздо печальней без твоей помощи, так что, это наша общая равноценная заслуга.

"Просмотровщик" исправлю на "Просмотрщик", хотя я не пойму в чём разница "правильности" :) Так же оказалось, что присутствуют мелкие очепятки и неполадки с форматированием, тоже потихоньку постараюсь их устранить.

Если желаешь разместить у себя на сайте или поправить и залить свой вариант, как тебе угодно, я только за.

Ехаем дальше потихоньку...
Название: Re: CopperCube
Отправлено: Samovar от 28 Июль 2019, 00:30:55
Кстати, кому надо, тут много готовых скайбоксов картинками для CopperCube. http://www.custommapmakers.org/skyboxes.php
Их достаточно просто преобразовать для  Блендера или иного движка с помощью этой проги (или подобной): http://blender-3d.ru/forum/index.php/topic,790.0.html

Можно вручную, в GIMP, а проще в InkScape... и т.п... Но самое лучшее- это если вы отрендерите в Блендере свой уникальный скайбокс для окружения в своей игре, который будет заточен под текстуры вашего ландшафта в CopperCube и общий стиль графики вашей игры :)  Разрезать карту окружения из Блендера тоже можно стандартными средствами перечисленными выше... Можно, вероятно, и более быстро... с помощью иных прог...
Название: Re: CopperCube
Отправлено: Samovar от 01 Октябрь 2019, 17:15:07
Где я могу получить помощь по моей проблеме в CopperCube?
Вы можете заглянуть на официальный форум CopperCube, там много отзывчивых людей.
Кроме того, существуют неофициальные сообщества CopperCube, такие как различные группы в социальных сетях, таких, как Facebook.

Какие функции будут добавлены в будущем?
Смотрите дорожную карту CopperCube.

Какое программное обеспечение я должен использовать для создания своих 3D-моделей?
По сути, вы можете использовать любой пакет 3D-моделирования для создания 3D-моделей для вашей сцены. CopperCube импортирует множество форматов файлов 3D, таких как .FBX, .3DS, .OBJ, .X и другие. Начиная с версии 3, CopperCube также включает в себя базовые низкополигональные инструменты моделирования, так что вы даже можете создавать свои 3D-модели непосредственно в CopperCube.
Если вы ищете бесплатный инструмент для создания ваших полигональных моделей, то мы можем порекомендовать Anim8or (очень простой в использовании) и Blender (более сложный).
Кроме того, взгляните на список рекомендуемого программного обеспечения для создания анимированных полигональных моделей.

Когда я создаю приложение WebGL, то насколько сложно из него украсть мои 3d модели?
3D-модели, импортированные в CopperCube, триангулируются, оптимизируются, преобразуются во внутренний формат и сохраняются в таком виде. Ваш исходный файл 3D-модели больше не требуется и не используется. Все данные, лишние для CopperCube, удаляются. Это означает, что ваши исходные файлы не распространяются вне внутреннего формата движка, и поэтому никто не сможет украсть их исходники. Кроме того, клиент CopperCube использует свой собственный двоичный формат файла, который меняется каждое незначительное обновление (это возможно, потому что оно является совместимым с прямой версией) и который из-за этого трудно реконструировать. Веб-клиенты (WebGL и Flash) используют этот формат для хранения ваших 3d-моделей, поэтому подытожим: ваши 3D-модели на платформе Web GL находятся в безопасности.

Когда я импортирую свою 3D-модель в CopperCube, то она выглядит некорректно, как это исправить?
CopperCube поддерживает множество форматов файлов для импорта, но могут быть особые случаи, когда это не работает идеально. Если ваша 3D-модель выглядит неправильно в CopperCube, сделайте следующее:
Как я могу сделать свои 3D-сцены более интересными, например, перемещая некоторые объекты в сцене?
Выберите 3D-объект, который вы хотите сделать движущимся, в окне свойств этого объекта перейдите на вкладку  'Behaviors' (Поведения), и добавьте ему новое поведение. Вы можете выбрать там несколько разных типов простых перемещений. Если вам нужно более сложное перемещение,то вы можете написать его сами: в документации CopperCube вы найдете несколько примеров того, как перемещать объекты с помощью ActionScript 3  (не поддерживается в CopperCube 6) или JavaScript.

Когда я нажимаю  'publish'  (опубликовать) в CopperCube, он зависает или падает. Почему?
Вероятно, что у вас в системе установлен кривой антивирусный сканер. Каждый раз, когда CopperCube создает .exe, ваш антивирусный сканер пытается сканировать этот файл, и затем в нём почему-то происходит сбой, а  потом, дополнительно, ваше кривое антивирусное приложение замораживает CopperCube. Отключение такого кривого антивирусного сканера, обычно решает эту проблему.

Перемещаясь в своем трехмерном мире, я застреваю, почему?
Иногда при движении объект может застрять в геометрии. Чтобы камера не застревала, всегда устанавливайте её таким образом, чтобы желтый эллипсоид  не  проникал в стены и иную геометрию.
Если камера застревает во время движения, проблема может заключаться в полигональной 3D-сетке: нужно быть осторожным при моделировании статической геометрии, с которой сталкивается камера. Геометрия полигональных сеток должна быть замкнутой, и нигде не должно быть торчащих односторонних многоугольников, обычно это те места, где персонаж застревает.
Кроме того, обратите внимание на положение вершин, которые должны находится в одной точке, но на ходятся, хоть и близко, но в разных точках. Это может вызвать проблемы. Если используемое программное обеспечение для трехмерного моделирования поддерживает функцию, такую ​​как  'Merge Vertex' (Слить вершины),  то сделайте это, чтобы вершины находились в одном месте, это  обычно помогает.

Существует также второй простой способ настройки переменной расстояния столкновения, чтобы уменьшить эффект застревания: нажмите на корневой узел вашей сцены, добавьте к нему поведение "Before first drawing do something" (Перед первой отрисовкой сделать что-либо), и в его действиях добавьте действие "Set or Change a Variable" (Установить или изменить переменную). Давайте предположим, что ваш движущийся по сцене объект имеет имя 'player'. Значит, выберите в качестве имени переменной '#player.colsmalldistance'. Установите её значение очень небольшим, например, 0.001. Экспериментируйте с разными значениями, чтобы точно настроить столкновения.

Как я могу расширить функциональность CopperCube?
В большинстве случаев вы можете добавить множество интерактивных функций без программирования, используя поведения. Кроме того, вы можете использовать API сценариев для добавления дополнительных программируемых свойств, таких как: более сложное поведение противника, игровая логика, связь с веб-сайтами и базами данных и т.д. Смотрите документацию о том, как это сделать.
Если вы используете WebGL, для этого есть второй, более сложный API с именем CopperLicht.
Если у вас есть профессиональная версия, то вы получите доступ к полному исходному коду. Кроме того, вы можете загрузить дополнительные действия и действия, созданные другими людьми, непосредственно из редактора.

Мне нужна помощь в программировании некоторых дополнительных функций для моего проекта.
По небольшим мелким вопросам мы можем бесплатно дать вам несколько советов о том, как это сделать, просто свяжитесь с нами. Если вам нужна более подробная помощь, которая может включать в себя работу по программированию, вы можете нанять нас для оплачиваемой работы: смотрите эту форму запроса особой функциональности.
Название: Re: Вопросы-ответы
Отправлено: Striver от 03 Октябрь 2019, 10:46:21
Цитировать
Кроме того, существуют неофициальные сообщества CopperCube, такие как различные группы в социальных сетях, таких, как Facebook.
Кроме того, существуют неофициальные сообщества CopperCube, такие, как различные группы в социальных сетях, например, в Facebook.

Цитировать
CopperCube импортирует множество форматов файлов 3D, таких как .FBX, .3DS, .OBJ, .X и другие.
CopperCube импортирует множество форматов 3D-файлов, таких как .FBX, .3DS, .OBJ, .X и других.

Цитировать
В нём отображается причина почему текстура не может быть загружена.
В нём отображается причина того, почему текстура не может быть загружена.

Цитировать
Кроме того, обратите внимание на положение вершин, которые должны находится в одной точке, но на ходятся, хоть и близко, но в разных точках.
Кроме того, обратите внимание на положение вершин, которые должны находиться в одной точке, но находятся, хоть и близко, но в разных точках.

Цитировать
Если используемое программное обеспечение для трехмерного моделирования поддерживает функцию, такую ​​как  'Merge Vertex' (Слить вершины),  то сделайте это, чтобы вершины находились в одном месте, это  обычно помогает.
Если используемое программное обеспечение для трехмерного моделирования поддерживает функцию слияния вершин, такую ​​как 'Merge Vertex', то используйте её, чтобы вершины находились в одном месте, это обычно помогает.
Название: Re: CopperCube
Отправлено: Samovar от 03 Октябрь 2019, 11:01:48
Поправил. Спасибо, Striver!
Название: Re: CopperCube
Отправлено: Samovar от 07 Октябрь 2019, 06:33:13
Частицы

CopperCube поддерживает системы частиц, что позволяет создавать такие эффекты, как дождь, снег, огонь, дым, взрыв и т.д.


Создание частиц
Чтобы создать сиcтему частиц, нажмите меню "Edit" «Правка» (или кликните правой кнопкой мыши на сцене) и выберите "Insert -> Create a particle system" «Вставить -> Создать систему частиц». Созданная система частиц  будет выглядеть так:


(https://s8.hostingkartinok.com/uploads/images/2019/10/98a7c3d2da208e81180f19262864541d.jpg)
(https://my-files.ru/zqnvea/particles.jpg)
(https://1.downloader.disk.yandex.ru/preview/3609a0b3acf88ecb2cb66c306dc85a1416c0c83c136539e3efa672ebcdafe1c7/inf/lkXF9tPpQzM-eQyg6BNxZF-US6YOtoF6rfepQiTWVt6LY2wa-6f1jQOW9sZOxknlvRyE8_kFV0fOJNyz99j4pg%3D%3D?uid=282542798&filename=particles.jpg&disposition=inline&hash=&limit=0&content_type=image%2Fjpeg&owner_uid=282542798&tknv=v2&size=1903x980)
Система частиц

Настроить систему частиц вы можете во вкладке 'Attributes' (Атрибуты) окна 'Properties' (Свойства):

(https://s8.hostingkartinok.com/uploads/images/2019/10/ad995e2f4f70822d9823f7893ef09980.jpg)
(https://3.downloader.disk.yandex.ru/preview/28f1dec73d17a817d7d46ff2ffb57a0b1587a5341a5a9e54b2751bad30ec7bc8/inf/uGvSET9qk5_OWxeqs19l1k0GVSZnCNpMf4HHf1w9zrkD1Mx6qrNyWxWm3aJr5BIQGfZUp7PTpULYxVs6yu-70Q%3D%3D?uid=282542798&filename=dlg_particles_attributes.jpg&disposition=inline&hash=&limit=0&content_type=image%2Fjpeg&owner_uid=282542798&tknv=v2&size=1903x980)
Свойства  системы частиц

Доступны следующие атрибуты:
Название: Re: CopperCube
Отправлено: Samovar от 09 Октябрь 2019, 12:14:13
Обзор плагинов для редактора

Функциональность редактора CopperCube может быть расширена с помощью плагинов. Благодаря этому можно сделать работу в CopperCube более продуктивной.
Чтобы установить плагин, скачайте .zip архив, распакуйте его содержимое (обычно .JS файл)  в Documents\CopperCube\plugins на Windows или ~/Documents/CopperCube/plugins на Mac OS X, перезагрузите CopperCube.
Все плагины публикуются под лицензией совместимой с zlib. В принципе, это означает, что эти плагины можно использовать бесплатно.

Ниже приведен список плагинов для редактора и их описание:

Наименование   
Описание   
Версия CopperCube,
автор и ссылка


compress scene
(сжать сцену)
   
Сжимает всю геометрию в сцене, чтобы уменьшить размер файла. Полезно для уменьшения размеров WebGL или Flash-сцен.   
5.3 и новее
N.Gebhardt
Скачать


snapToGrid
(привязка к сетке)   

Добавляет команду для привязки выделенного объекта к сетке и вторую команду для установки размера сетки. Сочетание клавиш: Ctrl+M   
4.3 и новее
pmax
Скачать


getOptimalLightmapSettings
(получить оптимальные параметры карты освещения)
   
Анализирует сцену и вычисляет оптимальные параметры расчета карты освещения. Сочетание клавиш: Ctrl+E   
4.0.4 и новее
BMSKiwi
Скачать


freezeScaleNormalizeNormals
(заморозить масштаб и нормализовать нормали)
   
Замораживает масштаб и вращение выделенной полигональной сетки, а также нормализует все её нормали, делая освещение на платформах WebGL и Flash более быстрым и точным. Сочетание клавиш: Ctrl+K   
4.0.4 и новее
N.Gebhardt
Скачать


splitOversizePolygons
(разбить негабаритные полигоны)
   
Может использоваться для автоматического разбиения слишком больших полигонов в сцене на более мелкие. Сочетание клавиш: Ctrl+R
4.0.4 и новее
BMSKiwi
Скачать


Если вам нужно больше плагинов, то вы можете создать свои собственные.
Название: Re: CopperCube
Отправлено: Samovar от 10 Октябрь 2019, 22:25:51
Создание плагинов

CopperCube поддерживает плагины - маленькие помощники в редакторе, чтобы упростить вашу работу. Плагины могут управлять 3D-геометрией в сцене, импортировать 3D-форматы файлов, настраивать и изменять 3D-сцену, настраивать параметры материала и многое другое.

Как создать плагин

Если вы запустили CopperCube хотя бы один раз, то он уже создал пустой пример плагина в папке "Документы" на Windows. Перейдите в каталог C:\Documents and Settings\username\Documents\CopperCube\plugins, там должен находиться файл example_plugin.js. В этом каталоге вы можете начать создавать свои собственные плагины. Если вы используете Mac OS X, перейдите в папку ~ / Documents, создайте подкаталог  'CopperCube', а затем 'plugins'.
Откройте текстовый редактор и создайте новый файл с именем, например 'test.js'. Плагины написаны на языке программирования JavaScript, отсюда у них расширение '.js'.
Запишите в файл следующий текст:
Код
function printHello()
{
  alert("Hello from your own plugin");
}

// add the hello function to the plugin menu
editorRegisterMenuEntry("printHello()", "Print Hello (example script)\tCtrl+H");

Затем сохраните его и запустите CopperCube. Если всё сделано правильно, то вы должны увидеть новый пункт в меню "Edit - > Plugins" (Правка - > Плагины) с именем "Print Hello":

(https://www.ambiera.com/coppercube/doc/images/plugin_menu.jpg)

Если выбрать эту команду или нажать сочетание клавиш Ctrl+H (как указано в приведенном выше коде), то будет запущена функция printHello() и отобразится такое окно сообщения:

(https://www.ambiera.com/coppercube/doc/images/plugin_hello.jpg)

Если окно сообщения не появилось, то вы сделали что-то не так. Для просмотра потенциальных сообщений об ошибках, вы можете открыть окно сообщений. Для этого выберите 'View -> Show Output Window' (Вид -> Показать окно сообщений). На базе этого простого упражнения, вы теперь имеете возможность создавать свои собственные простые плагины.


Использование окна сценариев (скриптов)

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

(https://www.ambiera.com/coppercube/doc/images/plugin_scriptwindow.jpg)

Вы можете разрабатывать свой код там, и как только он будет верно работать, скопировать его в ваш файл плагина. Используйте команду меню  'View -> Show Scripting Window'  (Вид - > Показать окно сценариев (скриптов)), чтобы открыть окно сценариев. Обратите внимание, что некоторые функции, такие как функция editorRegisterMenuEntry(), необходимая для создания элемента меню, работают только из файлов плагинов, а не из окна сценариев.
Это окно также полезно для разработки плагинов: вводя новую реализацию для уже существующей функции (например, функции printHello(), на рисунке выше), вы перезаписываете существующую функцию. При повторном использовании команды из меню плагина, вместо старой, будет выполнена новая функция.


Создайте что-нибудь функционально полезное

Для того, чтобы сделать что-то более полезное в плагине, вместо простого вывода сообщения, существует доступ ко множеству функций редактора. Для этого смотрите справку по JavaScript API, в которой описаны все функции на примерах. Например, этот плагин будет печатать количество полигонов (треугольников) выбранного в данный момент элемента (узла) сцены:
Код
function printSelectedPolyCount()
{
  var meshnode = editorGetSelectedSceneNode();
  var bufferCount = ccbGetSceneNodeMeshBufferCount(meshnode);
  if (bufferCount == 0)
    alert('The selected node has no 3D geometry.');
  else
  {
    var totalIndexCount = 0;
    for (var i=0; i<bufferCount; ++i)
      totalIndexCount += ccbGetMeshBufferIndexCount(meshnode, i);

    alert('The selected node has ' + (totalIndexCount/3) + ' polygons.' );
  }
}

editorRegisterMenuEntry("printSelectedPolyCount()", "Show poly count\tCtrl+P");
Скопируйте и вставьте этот код в свой файл test.js, перезапустите редактор, и у вас появится новый инструмент.


Список функций

Вы можете найти список всех доступных функций здесь.
Название: Re: CopperCube
Отправлено: Striver от 12 Октябрь 2019, 08:55:19
Частицы
Цитировать
MinParticlesPerSecond (Минимальное количество частиц в секунду): Минимальное количество частиц излучаемое системой частиц в секунду.
MinParticlesPerSecond (Минимальное количество частиц в секунду): Минимальное количество частиц, излучаемое системой частиц за секунду.

Цитировать
MaxParticlesPerSecond (Максимальное количество частиц в секунду): Максимальное количество частиц излучаемое системой частиц в секунду.
MaxParticlesPerSecond (Максимальное количество частиц в секунду): Максимальное количество частиц, излучаемое системой частиц за секунду.

Обзор плагинов для редактора
Цитировать
Все плагины публикуются под лицензией совместимой с zlib.
Все плагины публикуются под лицензией, совместимой с zlib.

Создание плагинов
Цитировать
Плагины написаны на языке программирования JavaScript, отсюда у них расширение '.js'.
Плагины написаны на языке программирования JavaScript, поэтому их расширение должно быть '.js'.

Цитировать
На базе этого простого упражнения, вы теперь имеете возможность создавать свои собственные простые плагины.
Теперь, на базе этого простого упражнения, вы имеете возможность создавать свои собственные простые плагины.

Цитировать
При повторном использовании команды из меню плагина, вместо старой, будет выполнена новая функция.
При повторном использовании команды из меню плагина, будет выполнена новая функция вместо старой.

Цитировать
Для того, чтобы сделать что-то более полезное в плагине, вместо простого вывода сообщения, существует доступ ко множеству функций редактора.
Чтобы сделать в плагине что-то более полезное, чем простой вывод сообщения, существует доступ ко множеству функций редактора.
Название: Re: CopperCube
Отправлено: Samovar от 13 Октябрь 2019, 16:56:11
Благодарю. Поправил.
Название: Re: CopperCube
Отправлено: Samovar от 15 Октябрь 2019, 06:06:47
Краткий обзор дополнительных поведений

Функциональность ваших приложений, созданных с помощью CopperCube, может быть расширена с помощью дополнительных поведений.
Чтобы установить поведение, скачайте .zip архив, распакуйте его содержимое (обычно .JS файл)  в Documents\CopperCube\extensions на Windows или ~/Documents/CopperCube/extensions на Mac OS X и перезагрузите CopperCube.
Все поведения публикуются под лицензией, совместимой с zlib. В принципе, это означает, что их можно использовать бесплатно.

Ниже приведен список дополнительных поведений и их краткое описание:


Наименование в CopperCube и описание   
Версия CopperCube,
автор и ссылка


Move Object by 3D Position Click (Перемещение объекта с помощью клика по 3D-позиции)

Прикрепляется к персонажу для перемещения его по клику мышью на 3D-позиции в 3D-мире. Полезно для игр жанра приключение. Поддерживаются следующие параметры:
4.5 и новее
N.Gebhardt
Скачать


Simple 2D Jump'n'Run (Простой 2D-прыжок и бег)

Очень простое поведение перемещения в 2D и прыжка. Перемещает узел, управляемый клавишами перемещения курсора (стрелками), только по оси X и пробелом для "прыжка". Поддерживаются следующие параметры:
4.0.4 и новее
N.Gebhardt
Скачать


Zoom Camera by Mouse Wheel (Увеличение области просмотра камеры с помощью колесика мыши)

Когда поведение прикреплено к узлу сцены (рекомендуется корневой узел), это позволяет увеличивать область просмотра текущей активной камеры с помощью колёсика мыши. Скорость, минимальное и максимальное увеличения, регулируются. Поддерживаются следующие параметры:
4.0.4 и новее
N.Gebhardt
Скачать


Parallax Camera Effect (Эффект параллакса камеры)

При подключении к камере это поведение позволяет слегка перемещать камеру в зависимости от положения мыши на экране, создавая при этом небольшой эффект параллакса. Область перемещения и скорость регулируются, а так же можно включать и отключать этот эффект вручную (см. комментарии в исходнике). Поддерживаются следующие параметры:
4.3 и новее
N.Gebhardt
Скачать


At random intervals do something (Делать что-либо через случайные промежутки времени)

Выполняет действие через произвольные интервалы времени. Поддерживаются следующие параметры:
4.3 и новее
N.Gebhardt
Скачать


Move scene node between 2 points (Перемещение узла сцены между двумя точками)

Линейно перемещает узел сцены между двумя 3D-точками. Это пример создания поведения из документации. Поддерживаются следующие параметры:
4.0.4 и новее
N.Gebhardt
Скачать


Animate with dynamically loaded textures (Анимация с помощью динамически загружаемых текстур)

Анимирует материал объекта с помощью массива динамически загружаемых с вашего сервера текстур. Работает с Flash и WebGL. Поддерживаются следующие параметры:
4.5 и новее
N.Gebhardt
Скачать


Edit Box 2D Overlay (Текстовое поле ввода в 2D-наложении)

Заставляет 2D-наложение вести себя как текстовое поле ввода. Просто прикрепите это поведение к любому 2D-наложению и начните ввод текста с клавиатуры. Дополнительно сохраняет текст в переменной, если это необходимо. Поддерживаются следующие параметры:
4.5.1 и новее
N.Gebhardt
Скачать


When javascript function is called do something (Сделать что-либо когда вызвана JavaScript функция)

Связывает любое действие CopperCube с именованной  JavaScript функцией. Атрибут "FunctionName" - это имя создаваемого объекта глобальной функции. Функция может быть вызвана из любого места в CopperCube для выполнения перечисленных действий. Поддерживаются следующие параметры:
5.0 и новее
BMSKiwi
Скачать


Third person shooter player  (Игрок шутера от третьего лица)

Это поведение позволяет объекту вести себя как в шутере от третьего лица: поворачивает персонажа игрока в направлении указателя мыши, перемещает с помощью клавиш перемещения курсора. Если установлена камера, то она будет следовать за объектом автоматически. Поддерживаются следующие параметры:
5.0 и новее
N.Gebhardt
Скачать


Detect swipes and gestures (Обнаружение жестов проведения пальцем)

Это поведение может обнаруживать жесты, такие как проведение пальцем вверх, вниз, влево и вправо, а затем вызывает действия. Просто прикрепите его к корневому узлу или объекту в сцене (а не к камере), и оно будет работать. Поддерживаются следующие параметры:
5.0 и новее
N.Gebhardt
Скачать


Extended Model Viewer Camera (Расширенная камера обзора модели)

Работает как встроенное поведение камеры обзора модели, но поддерживает панорамирование, и его радиус может быть изменен переменной JavaScript 'ModelViewerCameraExRadius'. Поддерживаются следующие параметры:
5.0 и новее
N.Gebhardt
Скачать


Play Fotstep Sounds (Воспроизвести звуки шагов)

Воспроизводит звук шагов, когда объект, к которому прикреплено это поведение, движется. Возможны три различных звука шага, представленные как слоты действий. Поддерживаются следующие параметры:
5.4 и новее
N.Gebhardt
Скачать


Day Night Cycle for Directional Light (Цикл смены дня и ночи для направленного источника света)

Поведение цикла смены дня и ночи может быть прикреплено к направленному источнику света и заставляет его вести себя как солнце, то есть будет восход, день, закат и ночь. Поддерживаются следующие параметры:
5.4.2 и новее
N.Gebhardt
Скачать


Два поведения для добавления чит-кодов в вашу игру: прямой чит-код системы и чит-код из консоли на основе  2D-наложения. В качестве чит-кодов могут использоваться только максимум 10  регистронезависимых символов латинского алфавита. Для получения более детальной информации смотрите файл описания на английском, включенный в .ZIP архив.

Cheat Sheet (add Cheats) (Список читов (добавить читы))

Поддерживаются следующие параметры:
Console_Cheat_code (Консоль чит-кода)

Поддерживаются следующие параметры:
5.5 и новее
Vazahat Pathan
Скачать


Follow Main Character On Scene Map (Следовать за главным персонажем на карте сцены)

Это поведение рисует карту и положение главного персонажа (персонажа игрока) на ней. В .ZIP архив включен файл .PDF с учебиком на английском. Поддерживаются следующие параметры:
5.5 и новее
A. AbdelSalam
Скачать


Text Animation (Анимация текста)

Анимация текста 2D-наложения с эффектом машинописи. Поддерживаются следующие параметры:
5.5 и новее
Vazahat Pathan
Скачать


Zoom camera by right mouse button (Увеличение области просмотра камеры с помощью правой кнопки мыши)

Увеличивает область просмотра камеры, когда нажата правая кнопка мыши. Поддерживаются следующие параметры:
5.5 и новее
Mio 'J0linar' Sejic
Скачать


If Below Sea Level do something (Сделать что-либо, если узел ниже уровня моря)

Запускает действие, когда узел к которому прикреплено данное поведение находится ниже определённого уровня (уровня моря). Поддерживаются следующие параметры:
5.7 и новее
Bracer Jack
Скачать


Function Keys Usage (Использование функциональных клавиш)

Позволяет использовать функциональные клавиши клавиатуры (F1, F2... F 12) (работает только на платформе Wndows '.exe'). Поддерживаются следующие параметры:
5.7 и новее
A. AbdelSalam
Скачать


Если вам нужно больше поведений, то вы можете создать свои собственные.
Название: Re: Краткий обзор дополнительных поведений
Отправлено: Striver от 18 Октябрь 2019, 09:43:43
Краткий обзор дополнительных поведений

Цитировать
Функциональность ваших приложений, созданных с помощью CopperCube, может быть расширена с помощью дополнительных поведений.
Вы можете расширить функциональность ваших приложений, созданных в CopperCube, используя дополнительные поведения.

Move Object by 3D Position Click (Перемещение объекта с помощью клика по 3D-позиции)
Цитировать
Прикрепляется к персонажу для перемещения его по клику мышью на 3D-позиции в 3D-мире.
Прикрепляется к персонажу, чтобы он перемещался по клику мышью на 3D-позиции в 3D-мире.

Zoom Camera by Mouse Wheel (Увеличение области просмотра камеры с помощью колесика мыши)
Цитировать
Когда поведение прикреплено к узлу сцены (рекомендуется корневой узел), это позволяет увеличивать область просмотра текущей активной камеры с помощью колёсика мыши.
Когда это поведение прикреплено к узлу сцены (рекомендуется корневой узел), оно позволяет увеличивать область просмотра текущей активной камеры с помощью колёсика мыши.

Цитировать
Скорость, минимальное и максимальное увеличения, регулируются.
Можно регулировать скорость, а также минимальное и максимальное увеличения.

Animate with dynamically loaded textures (Анимация с помощью динамически загружаемых текстур)
Цитировать
Анимирует материал объекта с помощью массива динамически загружаемых с вашего сервера текстур.
Анимирует материал объекта с помощью массива текстур, динамически загружаемых с вашего сервера.

Detect swipes and gestures (Обнаружение жестов проведения пальцем)
Цитировать
Это поведение может обнаруживать жесты, такие как проведение пальцем вверх, вниз, влево и вправо, а затем вызывает действия.
Это поведение может обнаруживать жесты, такие как проведение пальцем вверх, вниз, влево и вправо, а затем вызывает соответствующие действия.

Цитировать
Минимальная длинна проведения в процентах экрана
Минимальная длина проведения в процентах экрана

Cheat Sheet (add Cheats) (Список читов (добавить читы))
Цитировать
В качестве чит-кодов могут использоваться только максимум 10  регистронезависимых символов латинского алфавита.
Длина чит-кодов не должна превышать 10 символов, и они могут состоять только из символов латинского алфавита (регистр не учитывается).

Follow Main Character On Scene Map (Следовать за главным персонажем на карте сцены)
Цитировать
В .ZIP архив включен файл .PDF с учебиком на английском.
В .ZIP-архив включен файл .PDF с учебником на английском.

If Below Sea Level do something (Сделать что-либо, если узел ниже уровня моря)
Цитировать
Запускает действие, когда узел к которому прикреплено данное поведение находится ниже определённого уровня (уровня моря).
Запускает действие, когда узел, к которому прикреплено данное поведение, находится ниже определённого уровня (уровня моря).
Название: Re: CopperCube
Отправлено: Samovar от 19 Октябрь 2019, 00:14:39
Благодарю, Striver. Поправил. Ехаем дальше потихоньку.
Название: Re: CopperCube
Отправлено: Samovar от 24 Октябрь 2019, 18:43:56
CopperCube 6,3 выпущен: https://www.ambiera.com/coppercube/download.html
Это обновление включает в себя несколько небольших обновлений и исправлений:

-Публикация новых приложений в магазине Google Play в настоящее время вновь работает (Google повысил их минимальный уровень API)
-Целевая платформа Android теперь 29 (вместо ранее 26).
-Улучшенная поддержка iPhone WebGL:
- Встроенный в iPhone  рендеринг теперь также работает на WebGL. Большинство айфонов не поддерживают 4 источника света одновременно, так что рендеринг сводятся к двум источникам света одновременно.
-Лучшие резервные шейдеры для айфонов
-Добавлен итальянский перевод
-Улучшенный арабский перевод
-При выполнении кода WebGL на устройство не поддерживает все шейдеры, сообщения об ошибках "could not link program" (не может скомилировать программу) не отображается больше.
-Различные другие незначительные улучшения здесь и там.
Название: Re: CopperCube
Отправлено: Samovar от 19 Ноябрь 2019, 12:54:35
Краткий обзор дополнительных действий

Функциональность ваших приложений, созданных с помощью CopperCube, может быть расширена с помощью дополнительных действий.
Чтобы установить действие, скачайте .zip-архив, распакуйте его содержимое (обычно .JS файл)  в Documents\CopperCube\extensions на Windows или ~/Documents/CopperCube/extensions на Mac OS X и перезагрузите CopperCube.
Все действия публикуются под лицензией, совместимой с zlib. В принципе, это означает, что их можно использовать бесплатно.

Ниже приведен список дополнительных действий и их краткое описание:

Наименование в CopperCube и описание   
Версия CopperCube,
автор и ссылка


Fade the whole screen (Затухание всего экрана)

Постепенно заливает весь экран выбранным цветом или наоборот: вначале заливает экран выбранным цветом и постепенно проявляет сцену. После завершения выполняет действие.
Поддерживаются следующие параметры:
4.2 и новее
N.Gebhardt
Скачать


Make WebGL use the full page (Заставляет WebGL использовать полную страницу)

Позволяет приложению WebGL использовать всю страницу. Выполните это действие один раз (например, в поведении "Before first drawing do something"  (Перед первой отрисовкой сделать что-либо)  корневого элемента первой сцены), и ваше приложение WebGL будет использовать полную страницу.
Поддерживаются следующие параметры:
5.3 и новее
N.Gebhardt
Скачать


Switch Flash or WebGL to fullscreen  (Переключение на платформах Flash или WebGL в полноэкранный режим)

В целевых платформах WebGL и Flash, это действие переключает игру на полноэкранный режим. Поддерживает блокировку указателя мыши для камер шутера от первого лица. Действие должно быть запущено по клику мышью, или из события нажатия клавиши клавиатуры. Обратите внимание, что на платформе Flash после  запуска этого действия работают только клавиши перемещения курсора и пробел (ограничение безопасности).
Поддерживаются следующие параметры:
4.5 и новее
N.Gebhardt
Скачать


Toggle Fullscreen in WebGL (Переключение в полноэкранный режим на платформе WebGL)

На целевой платформе WebGL, это действие включает полноэкранный режим (и отключает его после повторного вызова), а также поддерживает блокировку мыши.
Поддерживаются следующие параметры:
4.5 и новее
N.Gebhardt
Скачать


Set Random Value (Установить случайное значение)

Устанавливает случайное значение для переменной в CopperCube.
Поддерживаются следующие параметры:
4.0.4 и новее
N.Gebhardt
Скачать


Do something later (Сделать что-либо позже)

Запускает действие спустя определенное количество времени.
Поддерживаются следующие параметры:
5.4 и новее
N.Gebhardt
Скачать


Dynamically load a texture (Динамически загрузить текстуру)

Динамически загружает текстуру с диска (Windows, Mac OS X) или с веб-сервера (WebGL, Flash).
Поддерживаются следующие параметры:
4.4 и новее
N.Gebhardt
Скачать


Set custom cursor in WebGL (Установить пользовательский курсор в WebGL)

Устанавливает пользовательский курсор мыши на целевой платформе WebGL.
Поддерживаются следующие параметры:
4.5 и новее
BMSKiwi
Скачать


Drag 3D Object (Перетащить 3D-объект)

Запуск / остановка перетаскивания 3D-объекта с помощью левой кнопки мыши. Чтобы сделать объект перетаскиваемым, добавьте это действие в поведение "When Clicked do something" (При нажатии сделать что-либо).

5.0 и новее
N.Gebhardt
Скачать


Drag 3D Object with axis constraints (Перетащить 3D-объект с ограничениями по осям)

То же самое действие, что и "Drag 3D Object", но можно ограничить движение по одной или более осям.
Поддерживаются следующие параметры:
5.0 и новее
N.Gebhardt
Скачать


Animated Scale of 3D Object (Анимированный масштаб 3D-объекта)

Анимирует масштаб объекта до определенного конечного значения.
Поддерживаются следующие параметры:
5.0 и новее
N.Gebhardt
Скачать


Disable Browser Context Menu (Отключить контекстное меню браузера)

Отключает меню браузера, которое появляется при щелчке правой кнопкой мыши в WebGL.

5.4 и новее
N.Gebhardt
Скачать


Steam: Set Achievement (Steam: установить достижение)

Действие по настройке и сбросу достижений Steam для вашей игры.
Поддерживаются следующие параметры:
5.5 и новее
N.Gebhardt
Скачать


Read specfic line of text from a file (Чтение определённой строки текста из файла)

Считывает определенную строку из текстового файла и отображает эту строку на 2d-наложении.
Поддерживаются следующие параметры:
5.7 и новее
Vazahat Pathan
Скачать


Если вам нужно больше действий, то вы можете создать свои собственные.
Название: Re: Краткий обзор дополнительных поведений
Отправлено: Striver от 22 Ноябрь 2019, 22:09:49
Цитировать
Функциональность ваших приложений, созданных с помощью CopperCube, может быть расширена с помощью дополнительных действий.
Вы можете расширить функциональность ваших приложений, созданных в CopperCube, используя дополнительные действия.

Fade the whole screen (Затухание всего экрана)
Цитировать
Постепенно заливает весь экран выбранным цветом или наоборот: вначале заливает экран выбранным цветом и постепенно проявляет сцену.
Постепенно заливает весь экран выбранным цветом, или наоборот: вначале заливает экран выбранным цветом и постепенно проявляет сцену.

Switch Flash or WebGL to fullscreen  (Переключение на платформах Flash или WebGL в полноэкранный режим)
Цитировать
В целевых платформах WebGL и Flash, это действие переключает игру на полноэкранный режим.
В целевых платформах WebGL и Flash это действие переключает игру на полноэкранный режим.

Toggle Fullscreen in WebGL (Переключение в полноэкранный режим на платформе WebGL)
Цитировать
На целевой платформе WebGL, это действие включает полноэкранный режим (и отключает его после повторного вызова), а также поддерживает блокировку мыши.
На целевой платформе WebGL это действие включает полноэкранный режим (и отключает его после повторного вызова), а также поддерживает блокировку мыши.

Название: Re: CopperCube
Отправлено: Samovar от 30 Ноябрь 2019, 23:01:14
Благодарю, Striver.
Название: Re: CopperCube
Отправлено: Samovar от 14 Декабрь 2019, 17:03:20
В общем, чего-то я прям серьёзно заморочался на авторское право...
Эти уроки хотел добавить: https://neophyte.cf/tutorials.html
Но теперь, переводить  и добавлять не буду, т.к. там все права явно защищены автором: © Copyright 2018-2019 Neophyte - All Rights Reserved
А мне влом ему писать и спрашивать разрешения на первод его уроков...
...
Но это не касается остального по CopperCube...раз уж уже нарушил их заперт на перевод и распространение документации, то надо нарушать до конца :)  (ещё почитаю законы РФ на счёт  того, можно ли переводить без спроса с указанием авторства и распространять общедоступную справку по CoppperCube в учебных и информационных некоммерческих целях) ...Пока в планах описание материалов IrrLicht, хотя тоже не знаю, нужно ли, т.к. большинство из них не работает в движке CopperCube после компиляции, а только в редакторе... И это сделано, видимо, только для экспорта  сцен в формате *.irr из CopperCube в проекты на  полнофункциональный движок Irrlicht. И на этом всё. Может, допереведу интерфейс на русский и поправлю под него справку со своими скриншотами... но х.з.
Что думаешь по этому поводу, Striver?
Название: Re: CopperCube
Отправлено: Striver от 14 Декабрь 2019, 20:10:05
Цитировать
В общем, чего-то я прям серьёзно заморочался на авторское право...
Тебе, вроде, раньше пофиг было,  оно сейчас тебе точно надо? Если что, сюда отвечать не надо, реши для самого себя.
Я своими переводами ето самое право много понарушал, хотя часть переведённых мною книжек я так или иначе купил.

Цитировать
Но это не касается остального по CopperCube...раз уж уже нарушил их заперт на перевод и распространение документации
А там точно есть такой запрет?

Цитировать
Что думаешь по этому поводу, Striver?
А что я должен думать? Чего б я ни думал, это неважно - тут твоя работа, и на твои планы-намерения влиять не хочу и не имею права. Я только слегонца подсобляю...
Название: Re: CopperCube
Отправлено: Samovar от 15 Декабрь 2019, 16:14:56
Цитировать
А там точно есть такой запрет?
Фиг его знает, вроде про переводы документации упомянуто в лицензии. Может быть авторы, выпустив бесплатную версию CopperCube, забыли поправить лицензию на документацию...
Читаю КонсультантПлюс, пытаюсь разобраться...
Как бы то ни было, пока буду делать своё "чёрное" дело :) Но если возникнут требования от  правообладателей об удалении темы и ссылки на перевод, то удалю, попросив об этом админа.
Кстати, админу форума не стоит переживать. Он тут вообще не при чём, и наш вездесущий Роскомнадзор не вправе блокировать форум без судебного решения...
Название: Re: CopperCube
Отправлено: Samovar от 18 Декабрь 2019, 22:05:35
В общем, я подумал, и решил пока удалить ссылку на комфортную сборку... Действительно интересующимся, вся инфа доступна в теме... (думаю, кому действительно надо было, тот следил, и уже скачал)...
... пока не решил, буду ли продолжать... надоело отчасти (банальная лень - это самая основная причина того, что так долго, на самом деле :) )... но, думаю, что всё-таки продолжу... позже...
Название: Re: CopperCube
Отправлено: Samovar от 19 Декабрь 2019, 01:16:57
По поводу материалов, вот цитата инфы из документации к движку WorldSim3d (вариант http://freebasic.ucoz.com/forum/24-252-1 )  (х.з. может всё у них уже умерло, т.к. у меня не открывается) для ЯП FreeBasic, созданного на основе  Irrlicht:



Цитировать
Синтаксис


wSetNodeMaterialType ( node as wNode, mat_type as wMATERIAL_FLAGS )


Описание


Определяет способ прикрепления материалов к ноду.


Node - нод в составе сцены.


mat_type - один из следующих применяемых к ноду параметров:




wMT_SOLID


Обычный рендеринг (solid). Используется только одна (первая) текстура, которая обычно является материалом типа Diffuse.


wMT_SOLID_2_LAYER


Материал с двумя слоями текстур.


Второй накладывается на первый и смешивается с ним, при этом используется alpha-параметр цветов вершин.


Данный материал пока не реализован в OpenGL.


wMT_LIGHTMAP


Тип материала со стандартно построенной картой освещённости.


Требует наличия двух текстур: первый текстурный слой - карта типа Diffuse,


второй - карта освещённости. Динамическое освещение игнорируется.


wMT_LIGHTMAP_ADD


...аналогичен предыдущему, но добавляет уровни вместо того, чтобы плавно переходить от одного к другому.


wMT_LIGHTMAP_M2


...аналогичен предыдущему, но цветовые аргументы текстурных уровней умножены на 2 для подсветки.


Аналогичен оператору D3DTOP_MODULATE2X из DirectX. Динамическое освещение игнорируется.


wMT_LIGHTMAP_M4


...аналогичен предыдущему,  но  цветовые аргументы текстурных уровней умножены на 4 для подсветки.


Аналогичен оператору D3DTOP_MODULATE4X из DirectX. Динамическое освещение игнорируется.


wMT_LIGHTMAP_LIGHTING


Как wMT_LIGHTMAP, но поддерживает динамическое освещение.


wMT_LIGHTMAP_LIGHTING_M2


Как wMT_LIGHTMAP_M2, но поддерживает динамическое освещение.


wMT_LIGHTMAP_LIGHTING_M4


Как wMT_LIGHTMAP_M4, но поддерживает динамическое освещение.


wMT_DETAIL_MAP


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


Часто используется для создания ландшафтов.


wMT_SPHERE_MAP


Выглядит как отражение окружающего пространства.


wMT_REFLECTION_2_LAYER


Отражающий материал с опциональным неотражающим текстурным слоем.


Карта отражения должна стоять первой текстурой.


wMT_TRANSPARENT_ADD_COLOR


Эффект прозрачности с цветовой текстуры в качестве фона. Чем темнее цвет, тем выше прозрачность.


Используется только первая  текстура. Новый цвет вычисляется добавлением исходного цвета и целевого цвета.  Если такой материал применить, например, к биллборду, с чёрной фоновой текстурой и красным кругом на ней, виден будет только красный круг, причём он будет слегка прозрачным. Черный фон будет 100% прозрачным, то есть невидимым. Материал данного типа удобно использовать для работы с частицами.


wMT_TRANSPARENT_ALPHA_CHANNEL


Эффект прозрачности, который использует альфа-значение цветовой текстуры как уровень прозрачности. То есть позрачность материала зависит от альфа-канала текстуры.


Итоговый цвет получается путём смешивания целевого цвета и цветовой текстуры. При этом значение alpha-канала выступает коэффициентом смешивания. Используется только первая текстура. Если использовать этот материал с текстурами малого формата, лучше всего загружать их в 32-битном режиме.


wMT_TRANSPARENT_ALPHA_CHANNEL_REF


Добавляет материалу прозрачность, беря за основу альфа-канал цветовой текстуры. Если значение альфа-канала превышает 127, точка (пиксель) приписывается к цели, в противном случае - нет. Материал не использует альфа-смешивания и обрабатывается гораздо быстрее, чем wMT_TRANSPARENT_ALPHA_CHANNEL. Идеально для отрисовки листвы, травы и др., т.к. границы изображения не размываются и остаются чёткими.


Использует только первую текстуру. Используя этот материал с текстурами малого формата, лучше всего загружать их в 32-битном режиме.


wMT_TRANSPARENT_VERTEX_ALPHA


Эффект прозрачности, который использует альфа-параметр вершин.



wMT_TRANSPARENT_REFLECTION_2_LAYER


Эффект прозрачности и отражения. Первая текстура служит картой отражений, вторая - цветовой картой. Значение прозрачности берется из альфа-параметра вершин. Карта отражений должна стоять первой текстурой. Текстура, не предполагающая отражения, может быть добавлена второй. Обратите внимание, что пока данный тип материала реализован в OpenGL непольностью.


wMT_NORMAL_MAP_SOLID


Обычный рендеринг с использованием карты нормалей. Первая текстура - цвет, вторая - карта нормалей. Используйте только для нодов, добавленных методом wAddStaticMeshForNormalMappingToScene.


Данный шейдер может использоваться на аппаратном обеспечении с поддержкой вершинного шейдера 1.1 и пиксельного шейдера 1.1. А при их отсутствии будет использоваться материал с fixed function-освещением. Шейдер поддерживает лишь два источника освещения, при большем их количестве выбираются два ближайших.


wMT_NORMAL_MAP_TRANSPARENT_ADD_COLOR


...аналогичен предыдущему, но с эффектом прозрачности на основе фонового цвета. Чем темнее цвет, тем выше прозрачность.


wMT_NORMAL_MAP_TRANSPARENT_VERTEX_ALPHA


...аналогичен предыдущему, но для определения прозрачности используется альфа-значение вершин.


wMT_PARALLAX_MAP_SOLID


Похож на wMT_NORMAL_MAP_SOLID, но использует параллаксное отображение. Выглядит в разы реалистичнее, обеспечивая виртуальное замещение поверхности. Использует альфа-канал карты нормалей для замещения карты высот. Первая текстура служит цветовой схемой, вторая должна быть картой нормалей. Последняя должна содержать значение высот в альфа-компоненте. Требует вертекс-шейдера 1.1 и пиксель-шейдера 1.4.


wMT_PARALLAX_MAP_TRANSPARENT_ADD_COLOR


...подобен предыдущему, но с эффектом прозрачнсьт, добавляющим цвет к фону. Чем темнее цвет, тем выше прозрачность.


Использует wMT_TRANSPARENT_ADD_COLOR в качестве базового материала.


wMT_PARALLAX_MAP_TRANSPARENT_VERTEX_ALPHA


...как и предыдущий, но использует эффект прозрачности на основе альфа-значения высот.


Задействует wMT_TRANSPARENT_VERTEX_ALPHA в качестве базового материала.


wMT_ONE_TEXTURE_BLEND


(ещё не добавлен)



wMT_FOUR_DETAIL_MAP


Четыре изображения в оттенках серого из каналов первой текстуры перемешиваются с каналами вершин как с альфа-изображениями.


wMT_TRANSPARENT_ADD_ALPHA_CHANNEL_REF


Данный тип используется для объекта Трава (Grass), см описание функции wAddGrass .


wMT_TRANSPARENT_ADD_ALPHA_CHANNEL


(ещё не добавлен)


wMT_FORCE_32BIT = &h7fffffff


Данный параметр не используется. Он лишь включает принудительную компиляцию последовательности под 32-бита.


Пример


wSetNodeMaterialType ( WaterNode, wMT_LIGHTMAP )





Название: Re: CopperCube
Отправлено: Samovar от 19 Декабрь 2019, 01:31:51
Ребята и девчата, и навальнята... ну, что-то, это же такое лучше для понимания, чем совсем ничего? :)
Или лучше оригинальная документация по движку Irrlicht ? :)
Название: Re: CopperCube
Отправлено: Samovar от 14 Ноябрь 2020, 22:57:57
Архив справки CopperCube на русском: https://yadi.sk/d/IdT6xnAR4znSbg
Название: Re: CopperCube
Отправлено: Striver от 14 Ноябрь 2020, 23:39:57
О, класс! Огромное спасибо за восстановленную справку!
У меня так и не дошли руки этим заняться...
Название: Re: CopperCube
Отправлено: Samovar от 15 Ноябрь 2020, 00:50:51
Я тоже рад, что восстановил доступ к своей старой почте и яндекс-диску... Почти год жил без компа :) Сначала ломало месяца два, потом освоился жить без компа и тырнетов...Узнал соседей получше... Сейчас прошла агорафобия, а то я дальше 100-200 метров от дома не отходил уже несколько лет (магазин и обратно)...Прикиньте, всякое бывает... да, бывает и такое, и тому есть веская причина, увы ...  И это было, также, очень самопозновательно... Наверное, без меня Вам всем тут было спокойней ? :) 
P.S. я долго отсутствовал не потому, что меня тут мегаопускали и троллили на форуме залётные хрюндели... а из-за банальной поломки моего компа и нехватки средств на его восстановление...
----------------
Скажите: -" ...и этот хрюндель-нищеброд", нихера не добившийся сам в жизни, смеет нас учить чему-то?".
Да! Смею! И буду учить вас, тупорылых, не спотыкаться на моих ошибках! И даже тех идиётов, которые старше меня и посадили детей, построили жену и вырастили дом :)
----------------
Striver, чтоб не было таких  казусов, сохрани у себя на сайте копию архива, пожалуйста. Да и все... сохраняйте и распространяйте, модифицируйте, но ссылайтесь на исходник перевода, т.е. на эту тему на этом форуме, пожалуйста!
Название: Re: CopperCube
Отправлено: Striver от 25 Ноябрь 2020, 18:12:48
Выложил перевод у себя на сайте:
http://striver00.ru/3d.htm
Название: Re: CopperCube
Отправлено: Samovar от 26 Ноябрь 2020, 05:19:59
Striver, спасибо тебе огромное и за помощь с переводом, и за то, что выложил его у себя!
Название: Re: CopperCube
Отправлено: Samovar от 04 Май 2021, 17:33:12
Выпущен CopperCube 6.4

Это обновление перемещает CopperCube на 64-разрядную платформу, включает в себя несколько небольших обновлений и исправлений, а также удаляет некоторые устаревшие функции:


64-разрядный редактор
Редактор теперь является 64-разрядным приложением, 32-разрядный редактор больше не поддерживается.
CopperCube теперь работает быстрее, а также может поддерживать гораздо более крупные проекты.
Если вам нужна поддержка 32 бит, то пожалуйста, используйте CopperCube 6.3 или старше.

(https://www.ambiera.com/coppercube/images_news/cc6-4-64bit.png)

64-разрядные приложения для Windows
Сгенерированные приложения Windows .exe теперь являются 64-х разрядными (вместо 32-х разрядных ранее).

Улучшена генерация macOS .app
Когда приложения для macOS создаются в CopperCube на Windows, то файл .app теперь будет автоматически упакован в zip-файл. Он может быть отправлен непосредственно пользователям macOS и таким образом запущен.
Больше нет необходимости вручную устанавливать флаги исполнения с помощью chmod или аналогичных команд.

(https://www.ambiera.com/coppercube/images_news/cc6-4-macos.png)

Более правильное выполнение системных команд
Команда scripting system() теперь имеет второй необязательный параметр, который при установке в значение "true" больше не вызывает появления окна консоли при запуске в Windows.
Вместо
system('notepad.exe');

теперь вы можете ввести
system('notepad.exe', true);

для того, чтобы при выполнении команды не выскакивало окно консоли.

64-разрядные приложения macOS
Все сгенерированные приложения для macOS теперь также 64-разрядные.

Импорт файлов с помощью скрипта
Импорт статических и анимированных полигональных сеток в редактор теперь возможен с помощью сценариев с использованием этих двух новых функций:

editorImportStatic3DMesh(имя_файла);

editorImportAnimated3DMesh(имя_файла);

Редактируемый порядок действий
Теперь порядок действий можно перестроить в редакторе. Это очень полезно, так как действия выполняются в том порядке, в котором они отображаются в списке. Просто кликните правой кнопкой мыши на действии в редакторе действий и выберите "Move up" ("Переместить вверх") или "Move down" ("Переместить вниз").

(https://www.ambiera.com/coppercube/images_news/cc6-4-move.jpg)

Остановлена поддержка редактора для macOS
Версия редактора для macOS больше не доступна.
Однако версия CopperCube для Windows все еще может создавать приложения для macOS.
Если вам нужна версия редактора CopperCube для macOS, пожалуйста, используйте версию 6.3 или более старую.
Причина этого заключается в том, что Apple больше не поддерживает OpenGL ("прекращено") и Carbon ("прекращено") и, к сожалению, как правило, имеет ужасную стратегию в отношении обратной совместимости. Большую часть времени разработка CopperCube была потрачена на устранение ошибок, появившихся в новых версиях macOS. Таким образом, удаление поддержки редактора macOS приведет к тому, что разработка продолжится немного быстрее.

Удалена поддержка Oculus Rift
Поддержка Oculus Rift VR была удалена. В любом случае CopperCube поддерживал только старый DevKit.

Обновлен пользовательский интерфейс
Интерфейс переведён на новый инструментарий для Windows (wxWidgets 3) - теперь некоторые части пользовательского интерфейса будут выглядеть немного по-другому.

Различные исправления при импорте 3D-файлов и текстур
Исправлена инверсия цвета при импорте файлов DDS
Исправлена ошибка при импорте obj с недопустимым файлом материала
Исправлена ошибка, приводившая к сбою CopperCube при импорте файлов Blender .blend без родителя
Исправлена ошибка, приводившая к сбою CopperCube при импорте файлов Blender .blend без заданного материала

Библиотека zlib обновлена до новой версии.
Название: Re: CopperCube
Отправлено: Samovar от 23 Июнь 2021, 08:12:34
Поведение для объекта типа 2D-наложение (2D Overlay): "Счётчик кадров в секунду" (FPS)  https://www.ambiera.com/forum.php?t=4839


Код
// This Coppercube behavior must be attached to a 2D Overlay2, where it will show the FPS. 
// Converted to CopperCube by : Gar
// Origional : Isaac Sukin
// [url]https://www.isaacsukin.com/news/2015/01/detailed-explanation-javascript-game-loops-and-timingfps-control[/url]
//
// The following embedded xml is for the editor and describes how the behavior can be edited:
// Supported types are: int, float, string, bool, color, vect3d, scenenode, texture, action
/*
   <behavior jsname="behavior_fps" description="FPS counter">
   
   </behavior>
*/


behavior_fps = function()
{
   /*
   var fps = 60,
    framesThisSecond = 0,
    lastFpsUpdate = 0;
   */
   
   this.fps = 60;
   this.framesThisSecond = 0;
   this.lastFpsUpdate = 0;
   
   /*
   this.Speed = 1.0;
   this.TimeOfDay = -1;
   this.LastTime = -1;
   */
};




// called every frame.
//   'node' is the scene node where this behavior is attached to.
//   'timeMs' the current time in milliseconds of the scene.
// Returns 'true' if something changed, and 'false' if not.
behavior_fps.prototype.onAnimate = function(n, timeMs)
{
   
       if (timeMs > this.lastFpsUpdate + 1000) { // update every second
        this.fps = 0.25 * this.framesThisSecond + (1 - 0.25) * this.fps; // compute the new FPS
     
      ccbSetSceneNodeProperty(n, "Text", Math.round(this.fps) + ' ');
     
        this.lastFpsUpdate = timeMs;
        this.framesThisSecond = 0;
    }
    this.framesThisSecond++;
 
}
Название: Re: CopperCube
Отправлено: Samovar от 10 Декабрь 2021, 00:57:54
CopperCube обновлён до версии 6.5.1

https://www.ambiera.com/coppercube/index.html
Название: Re: CopperCube
Отправлено: Samovar от 05 Март 2023, 17:25:43
CopperCube обновлён до версии 6.6
https://www.ambiera.com/coppercube/index.html
https://www.ambiera.com/coppercube/changelog.html
----------
https://cgpersia.com/2023/01/ambiera-coppercube-professional-6-6-win-x64-188107.html
Название: Re: CopperCube
Отправлено: Samovar от 05 Март 2023, 17:28:37
Куча полезного по CopperCube здесь: https://neophyte.cf
Название: Re: CopperCube
Отправлено: Samovar от 19 Ноябрь 2023, 23:23:38
Поставил Androd Studio, скачал JDK, как в инструкции... и SDK версии 30. Указал к ним пути, создал Keystore...
Собрал под Андройд  сцену с кубом по умолчанию... в APK
Всё прекрасно работает, как в эмуляторе, так и на смартфоне...