MojorDoMo и three.js (3d сцены)

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

Модератор: immortal

Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: MojorDoMo и three.js (3d сцены)

Сообщение sergejey » Пт ноя 06, 2015 3:38 pm

Хм, у меня вывелось нормально:
Изображение

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: MojorDoMo и three.js (3d сцены)

Сообщение nick7zmail » Пт ноя 06, 2015 3:47 pm

У меня вот так
Вложения
22.jpg
22.jpg (53.11 КБ) 9991 просмотр
11.jpg
11.jpg (139.44 КБ) 9991 просмотр
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: MojorDoMo и three.js (3d сцены)

Сообщение nick7zmail » Вс ноя 08, 2015 10:06 pm

Сергей, кажется понял почему не грузит. Отсутствует файл

Код: Выделить всё

http://192.168.1.179/js/threejs/loaders/SceneLoader.js Failed to load resource: the server responded with a status of 404 (Not Found)    
И еще немного по поводу библиотек. После обновления с веб-сокетами - перестал на сцене отрисовываться скетч на processing.js. Раньше рисовался прямо внутри сцены (часы), сейчас - не хочет. В чем проблема может быть? В application.html он прописан

Код: Выделить всё

<script type="text/javascript" src="/js/processing.js"></script>
Какая страничка за сцены отвечает? Может там её еще нужно подключить?
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: MojorDoMo и three.js (3d сцены)

Сообщение nick7zmail » Вт ноя 10, 2015 10:53 am

Спасибо за обновление. Уже нашел SceneLoader.js на гитхабе в папке depricated. Думал - приду домой, скопирую - проверю, а тут уже обнова. Сейчас все работает.
С процессингом тоже разобрался. Видимо не скопировал в templates_alt страничку action_usual.html. Именно там была подключена библиотека, а после обновы - затерлась.
Немного покопался вчера со SceneLoder-ом. Попробовал на отдельно взятой страничке подгрузить сцену (с отдельной страничкой проще работать). Сцена подгрузилась, но рендерется не захотела. Возможно не так указывал метод/место вывода...хотел попробовать несколько фишек сделать с опознанием клика по объекту, привязки к MD...ну не суть. Это я к чему...

1) На сколько я понял объектам добавленным в сцену присваиваются имена равные uuid. Можно как нибудь обратиться к объекту на сцене? Что то формата loaded.objects.<uuid>, или подобной последовательностью? В лодере слишком много кода, и различных вспомогательных загрузчиков) не успел перелопатить, подумал - проще спросить.
2) Я конечно не весь код просматривал, но по-моему поле "дополнительный javascript код" в этом элементе не используется. Предлагаю его включить, например, в функцию инициализации. Так можно будет подключить, скажем тот же мидл-коннектор, и считать свойства объектов MD. Пока чистым кодом, потому что не представляю как это привязать в gui...
3) Можно на подобии поля "дополнительный javascript код" добавить render code, и запускать в функции рендера. На сколько я знаю - все анимации, движения (в т.ч. движения/перемещения камеры, самих объектов) описываются обычно там. Скажем воткнул туда что-то типа

Код: Выделить всё

var r = Date.now() * 0.0005;
camera.position.x = 700 * Math.cos( r ); 
и в элементе камера поехала))
Источники света я перерисовывал тоже в функции рендера. И так же можно будет связать со свойствами MD, указанными при инициализации.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: MojorDoMo и three.js (3d сцены)

Сообщение sergejey » Вт ноя 10, 2015 12:45 pm

Выложил свежие наработки по этой теме.
картинкаПоказать
Изображение
По-тиху приближаемся к интерактиву. Сейчас для элементов типа 3д-сцена можно добавлять состояния, каждое состояние может быть привязано к 3д-объекту или камере (названия пока вручную вбиваются, но потом можно делать выбор).

Привязка к объекту для того, чтобы показывать/прятать объект в зависимости от условий состояния -- это работает. Так же привязка будет использоваться для обработки кликов по объекту -- пока не работает (тут застопорился, не могу пока разобраться с тем, как определить, по какому объекту был клик мышкой). Кстати, надо проверить будет ли работать привязка с источниками света.

Привязка к камере для того, чтобы по условию переключать вид на указанную камеру (в будущем, возможно, будет плавный переход между камерами, но пока просто переключение).
Пример в действииПоказать
1. Выключатель включен (объект Сфера виден, активна Камера 2)
Изображение
2. Выключатель выключен (объект Сфера скрыт, активна Кмера 1 (камера по-умолчанию))
Изображение
P.S. Насчёт кода из редактора -- то ли я не туда смотрел, то ли он не экспортируется при экспорте сцены. У меня в редакторе был код для камеры и его в итоговом JSON нету после экспорта.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: MojorDoMo и three.js (3d сцены)

Сообщение nick7zmail » Вт ноя 10, 2015 1:19 pm

sergejey писал(а):Выложил свежие наработки по этой теме.
По-тиху приближаемся к интерактиву. Сейчас для элементов типа 3д-сцена можно добавлять состояния, каждое состояние может быть привязано к 3д-объекту или камере (названия пока вручную вбиваются, но потом можно делать выбор).
Уже неплохой уровень интеграции).
sergejey писал(а): Так же привязка будет использоваться для обработки кликов по объекту -- пока не работает (тут застопорился, не могу пока разобраться с тем, как определить, по какому объекту был клик мышкой). Кстати, надо проверить будет ли работать привязка с источниками света.
По поводу кликов по объектам - как раз с этого и начал знакомство с threejs, т.к. на процессинге этого не получилось.
В общем механизм примерно такой: строится вектор из положения мыши, перпендикулярно камере

Код: Выделить всё

...
raycaster = new THREE.Raycaster();
mouse = new THREE.Vector2();
...
            function onDocumentMouseDown( event ) {

                event.preventDefault();

                mouse.x = ( event.clientX / renderer.domElement.width ) * 2 - 1;
                mouse.y = - ( event.clientY / renderer.domElement.height ) * 2 + 1;
                raycaster.setFromCamera( mouse, camera );
...

 
Далее при клике создается массив

Код: Выделить всё

var intersects = raycaster.intersectObjects( objects ); 
объектов через которые прошел вектор, и, как я делал на своих сценах, обращался к [0] (верхнему) объекту в массиве, и в зависимости от имени объекта - выставлял действия.

Код: Выделить всё

                if ( intersects.length > 0 ) {
                
                switch ( intersects[ 0 ].object.name ) {
                case 0: //имя объекта
                test_js = new middle_connector('свет_на_кухне.turnon', 'l', 5000, 1);
                test_js.objectToSend = 'свет_на_кухне';
                test_js.methodToSend = 'turnon';
                test_js.MultiSendData();
                break; 
Именно это хотел протестить со ScaneLoader-ом. Вот еще немного инфы...да и в экзамплах найти можно...
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: MojorDoMo и three.js (3d сцены)

Сообщение sergejey » Вт ноя 10, 2015 1:33 pm

Ура! Этого примера как раз не хватало. У меня был похожий код, но немного другой. С этим всё заработало -- события по клику теперь отрабатываются отлично, т.е. то, что прописано как действие при клике, отрабатывает как нужно при клике на 3д объект.

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: MojorDoMo и three.js (3d сцены)

Сообщение sergejey » Вт ноя 10, 2015 6:47 pm

Очередной затык :) Не могу сделать плавный переход между камерами. Ну никак не получается...
Есть такой код:

Код: Выделить всё

                if (obj[i].STATE=='1') {
                  new_camera = scene.getObjectByName( elem.data('s3d_camera'), true );;
                 }else {
                  new_camera = default_camera;
                 }

                 camera=new_camera; 
Из него хочется сделать нужный с плавным переходом, чтобы не просто камера менялась, а camera переезжала в позицию new_camera и меняла направление "взгляда".
Пробовал примеры с Tween.js, но ничего не выходит. Даже без плавности не могу присвоить camera такие же свойства, что бы она стала на место new_camera. В общем, нужна помощь зала :)

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: MojorDoMo и three.js (3d сцены)

Сообщение nick7zmail » Вт ноя 10, 2015 7:35 pm

sergejey писал(а):Очередной затык :) Не могу сделать плавный переход между камерами. Ну никак не получается...


Из него хочется сделать нужный с плавным переходом, чтобы не просто камера менялась, а camera переезжала в позицию new_camera и меняла направление "взгляда".
Пробовал примеры с Tween.js, но ничего не выходит. Даже без плавности не могу присвоить camera такие же свойства, что бы она стала на место new_camera. В общем, нужна помощь зала :)
Я еще предыдущие то фишки протестить не успел =D...плавного перехода между несколькими камерами скорее всего не получится. Единственный вариант подобного перехода - "прокатить" первую камеру до позиции второй, переключить на вторую камеру, и первую вернуть на свою позицию.
Tween, если я правильно помню - по моему для какой-то пост-анимации после перемещения...а может для самой анимации...может что-то путаю.

Конкретно с переключением есть пример, просто он первым делом вспомнился. Листал примеры в самом начале, чтобы посмотреть на что способна threejs, сейчас код не просматривал. Вот, может поможет. Кстати - там же с изменением точки "взгляда" -1,2 камеры.
Последний раз редактировалось nick7zmail Вт ноя 10, 2015 9:38 pm, всего редактировалось 1 раз.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Аватара пользователя
sergejey
Site Admin
Сообщения: 4286
Зарегистрирован: Пн сен 05, 2011 6:48 pm
Откуда: Минск, Беларусь
Благодарил (а): 76 раз
Поблагодарили: 1559 раз
Контактная информация:

Re: MojorDoMo и three.js (3d сцены)

Сообщение sergejey » Вт ноя 10, 2015 9:24 pm

Я так и собираюсь - катать одну камеру по позициям других камер. Tween как раз для плавного изменения атрибутов. Но пока что-то не работает.

Отправлено с моего SM-G800H через Tapatalk

Сергей Джейгало, разработчик MajorDoMo
Идеи, ошибки -- за предложениями по исправлению и развитию слежу только здесь!
Профиль Connect -- информация, сотрудничество, услуги
Ответить