Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Веб-программирование > JavaScript / HTML

JavaScript / HTML Создание динамической разметки страниц

Ответ
 
Опции темы
Старый 17.03.2017, 19:53   #136
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,158
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: PlayCanvas

Хей, нужно получить пиксели в текстуре по координатам, передаю ее через атрибут, но метод lock() выдает ссылку, а не массив.
Как быть?
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 18.03.2017, 00:11   #137
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: PlayCanvas

А текстура рендеренная или это jpg/png и можешь её в canvas2d отрисовать?
В вебе к сожалению из картинки пиксели не просто получить.

В общем создаёшь canvas 1х1 пиксель, получаешь его 2д контекст, рисуешь туда image так чтобы пиксель был какой нужно и где нужно. И затем getImageData с этого canvas'а, выдаст массив с пикселем и его цветами.
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо moka за это полезное сообщение:
Mr_F_ (18.03.2017), Nex (18.03.2017)
Старый 20.03.2017, 05:17   #138
ant0N
Бывалый
 
Аватар для ant0N
 
Регистрация: 10.06.2011
Адрес: В горах
Сообщений: 849
Написано 331 полезных сообщений
(для 853 пользователей)
Ответ: PlayCanvas

Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 600 сообщение(ий)):
У вас нет прав, чтобы видеть скрытый текст, содержащийся здесь.
__________________
Абсолютли!
(Offline)
 
Ответить с цитированием
Старый 20.03.2017, 13:50   #139
Mr_F_
Терабайт исходников
 
Аватар для Mr_F_
 
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений
(для 6,051 пользователей)
Ответ: PlayCanvas

Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 600 сообщение(ий)):
У вас нет прав, чтобы видеть скрытый текст, содержащийся здесь.
__________________
бложик | geom.io | твиттер | faded | демо 1 2 | роботы | лайтмаппер
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо Mr_F_ за это полезное сообщение:
moka (20.03.2017), Randomize (20.03.2017)
Старый 20.03.2017, 16:52   #140
ant0N
Бывалый
 
Аватар для ant0N
 
Регистрация: 10.06.2011
Адрес: В горах
Сообщений: 849
Написано 331 полезных сообщений
(для 853 пользователей)
Ответ: PlayCanvas

Сообщение от Mr_F_ Посмотреть сообщение
*** скрытый текст ***
ты сказал, а мока подтвердил. Нашел
__________________
Абсолютли!
(Offline)
 
Ответить с цитированием
Старый 20.03.2017, 19:56   #141
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,158
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: PlayCanvas

Мне тупо расставить мебель и отправить/принять JSON, на рендер срать
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 20.03.2017, 22:48   #142
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,158
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: PlayCanvas

Вопрос №2, у нас есть Mesh, мне нужно по координатам rayCast получить UV.
Как это правильно сделать?

Набросал скрипт, который если я ничего не напутал, получает rayCast point, переводит его в локальную относительно объекта и сравнивает с вершинами в меше.
По моей задумке на ближайшей вершине нужно брать UV. Так? (Влом интерполировать между несколькими)

Правда в PC с векторной математикой как-то неудобно.
https://playcanvas.com/editor/code/452172?tabs=7201110
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 21.03.2017, 23:18   #143
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: PlayCanvas

Сообщение от RegIon Посмотреть сообщение
Вопрос №2, у нас есть Mesh, мне нужно по координатам rayCast получить UV.
Как это правильно сделать?

Набросал скрипт, который если я ничего не напутал, получает rayCast point, переводит его в локальную относительно объекта и сравнивает с вершинами в меше.
По моей задумке на ближайшей вершине нужно брать UV. Так? (Влом интерполировать между несколькими)

Правда в PC с векторной математикой как-то неудобно.
https://playcanvas.com/editor/code/452172?tabs=7201110
https://playcanvas.com/editor/code/4...201110&line=87

var d = this._new.length();
   if(d < 0.2)
Вот так я бы не делал, т.к. это будет совсем не точным, и большие треугольники будет простреливать.

Думаю есть спец-алгоритмы как это делать быстро, но в голову приходит такая идея:
1. Получаешь список вершин отсортированных по дистанции от точки, сперва ближе, потом дальше.
2. Строишь индекс по индексному буферу треугольников-вершин. Чтобы по индексу вершины треугольник и другие вершины получать было быстро.
3. Бежишь по сортированным вершинам, получаешь их треугольники.
3а. Вычисляешь нормаль треугольника по трём вершинам.
3б. Трансформируешь точку относительно вершине используя нормаль.
3в. Проверяешь если точка в плоскости треугольника.
3г. Проверяешь если точка в рамках треугольника (3ех вершин).
4. Если что-то не удовлетворено, то запоминаешь индекс треугольника чтобы его заного не вычислять, и продолжаешь №3.
5. Когда найден треугольник, интерполировать UV между уже будет не сложно (формулы онлайн есть).

Вообще было бы хорошо иметь встроенную фичу такого рода.

Учти что vertexBuffer имеет "формат", там не только позиции, но и нормали, цвет и ещё всякая инфа в нём. Следственно там не будет 3 элемента на вершину, а будет по разному исходя из формата. getFormat (http://developer.playcanvas.com/en/a...html#getFormat) - получает формат буфера.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Mr_F_ (21.03.2017)
Старый 22.03.2017, 07:19   #144
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,158
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: PlayCanvas

Сообщение от moka Посмотреть сообщение
https://playcanvas.com/editor/code/4...201110&line=87

[code]
Учти что vertexBuffer имеет "формат", там не только позиции, но и нормали, цвет и ещё всякая инфа в нём. Следственно там не будет 3 элемента на вершину, а будет по разному исходя из формата. getFormat (http://developer.playcanvas.com/en/a...html#getFormat) - получает формат буфера.
У меня всегда только сфера всегда. По идее мне вообще нужно трансформировать точку с ScreenPoint в сферические координаты на текстуре. Если курсор в центре окна, то нормально еще, можно углы в UV перенести, а если смещать, то искажения, вот и приходится танцевать
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 22.03.2017, 23:51   #145
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: PlayCanvas

Сообщение от RegIon Посмотреть сообщение
У меня всегда только сфера всегда. По идее мне вообще нужно трансформировать точку с ScreenPoint в сферические координаты на текстуре. Если курсор в центре окна, то нормально еще, можно углы в UV перенести, а если смещать, то искажения, вот и приходится танцевать
Ну если сфера, то даже проще. Тебе даже физику не нужно использовать.
Есть BoundingSphere и Ray, и метод intersectsRay: http://developer.playcanvas.com/en/a...#intersectsRay

По мышки от камеры лучом по сфере пикаешь, получаешь точку, переводишь в координаты сферы с учётом поворота, и далее по формуле если гео-развёртка, получаешь UV.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Mr_F_ (23.03.2017)
Ответ


Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 01:00.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com