[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 3 из 3
  • «
  • 1
  • 2
  • 3
panda3d и webgl
fron_de_befДата: Четверг, 06.10.2022, 19:20 | Сообщение # 31
Сержант
Группа: Пользователи
Сообщений: 36
Награды: 0
Репутация: 5
Статус: Offline

Цитата
Я опять не понял причем тут верстка, тут проблема с кодом панда
Это я понял, просто тыкаюсь с решениями проблем куда только можно. Мало ли
 
Цитата
нужно выложить часть кода как ты настраиваешь линзу камеры
Каким образом камера связана с координатной системой? Как не настраивай камеру координаты и сама сцена не меняется. + У меня же проблема не с отображением, оно то как раз как работает как положено.

Цитата
как ты отслеживаешь изменения
Так в этом то и проблема(насколько я понял) изменений в самой панде не происходит. Я к примеру для проверки использовал команду (WindowProperties.getDefault()).size которая показала что "якобы" размеры игрового окна не меняются. Поэтому собственно коллизия кнопок и картинки которая реагирует на мышь и смещается(точнее она остается там где была). А как связать окно браузера и игровое окно(и можно ли это вообще сделать) я не знаю.

Очень жаль конечно, но наверное на этом стоит остановиться. Похоже пока web не для panda3d, точнее для конкретно моих целей


Сообщение отредактировал fron_de_bef - Четверг, 06.10.2022, 19:26
 
serg-kkzДата: Четверг, 06.10.2022, 19:36 | Сообщение # 32
Генерал-полковник
Группа: Модераторы
Сообщений: 803
Награды: 3
Репутация: 18
Статус: Offline
Все с тобой понятно... Ты сначала протестируй приложение на компе, попробуй менять размеры окна без веб сборки. Я тебе по секрету скажу что собрал пример музыкальной шкатулки и с интерфейсом нет ни каких проблем. Я уверен что ты чего то намудрил сам.

Для особо одаренный кодеров:

Код
from panda3d.core import WindowProperties
print(WindowProperties.getDefault())


Открой питон из командной строки и в бей по очереди эти строки.  Потом составь теорему своего видения  wink


ООП  -  

Сообщение отредактировал serg-kkz - Четверг, 06.10.2022, 19:44
 
fron_de_befДата: Четверг, 06.10.2022, 19:45 | Сообщение # 33
Сержант
Группа: Пользователи
Сообщений: 36
Награды: 0
Репутация: 5
Статус: Offline

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

Добавлено (06.10.2022, 19:47)
---------------------------------------------
Пойду посмотрю этот пример со шкатулкой. Хотя для справки как я мог намудрить если делал все по документации самой панды

 
serg-kkzДата: Четверг, 06.10.2022, 20:02 | Сообщение # 34
Генерал-полковник
Группа: Модераторы
Сообщений: 803
Награды: 3
Репутация: 18
Статус: Offline
Я тебе могу объяснить что панда ни чего не знает про изменения окна, тебе нужно переопределить вызов который настраивает линзу или камеру в соответствии с размером окна, он где то  находится в классе ShowBase (Я такими мелочами не интересуюсь, я пишу собственные обработчики), как ты будешь сообщать новый размер тебе придётся подумать глядя на это:

https://rdb.name/panda3d-webgl.md.html#supplementalmodules
https://rdb.name/panda3d....iptapis


ООП  -  

Сообщение отредактировал serg-kkz - Четверг, 06.10.2022, 20:03
 
fron_de_befДата: Четверг, 06.10.2022, 20:14 | Сообщение # 35
Сержант
Группа: Пользователи
Сообщений: 36
Награды: 0
Репутация: 5
Статус: Offline
Цитата
пример музыкальной шкатулки и с интерфейсом нет ни каких проблем

Добавлено (06.10.2022, 20:15)
---------------------------------------------
с другой стороны, значит дело не во мне

 
serg-kkzДата: Четверг, 06.10.2022, 20:28 | Сообщение # 36
Генерал-полковник
Группа: Модераторы
Сообщений: 803
Награды: 3
Репутация: 18
Статус: Offline
А в ком? в дядьке в каком то, который должен думать на перед чтоб предугадать что ты хочешь. Вообще ты отображаешь текстуру поверх холста, соответственно генерироваться каких либо событий окна не будет. Тебе придётся реализовать это самому, нужно повторить функционал вот этот, под твой случай.

https://github.com/panda3d....y#L2963
https://github.com/panda3d....y#L3015

Замечу здесь масштабируется сам узел интерфейса и рендера, но я предпочитаю масштабировать камеру, так моя система GUI использует буфер для обнаружения событий.


ООП  -  

Сообщение отредактировал serg-kkz - Четверг, 06.10.2022, 20:34
 
serg-kkzДата: Четверг, 06.10.2022, 20:36 | Сообщение # 37
Генерал-полковник
Группа: Модераторы
Сообщений: 803
Награды: 3
Репутация: 18
Статус: Offline
И да тебе нужно использовать оригинальный html, возможно там это было уже реализовано. Да не в оригинальном просто жесткие размеры окна.
https://rdb.name/panda3d-webgl/music_box.html


ООП  -  

Сообщение отредактировал serg-kkz - Четверг, 06.10.2022, 21:00
 
serg-kkzДата: Пятница, 07.10.2022, 23:43 | Сообщение # 38
Генерал-полковник
Группа: Модераторы
Сообщений: 803
Награды: 3
Репутация: 18
Статус: Offline
Ну это нужно где то исправлять глубоко в коде, для себя ты можешь сделать фиксированный размер как ты задал в панда, соответственно менять его можешь в коде как обычно. Только таблицу стилей немножко подправь.

Код

  <style>
        .out {
            position: absolute;
            top: 0; left: 0; bottom: 0; right: 0;
            margin: auto;
            overflow: auto;
        }
    </style>


ООП  -  
 
serg-kkzДата: Воскресенье, 09.10.2022, 17:54 | Сообщение # 39
Генерал-полковник
Группа: Модераторы
Сообщений: 803
Награды: 3
Репутация: 18
Статус: Offline
Вот доказательство того что это работает.

https://www.soft.portzero.ru/panda3d/samples/music-box/

Я использовал модуль browser и этот код:

Код

  from browser import window

        self.window = window
        self.old_winsize = (0, 0)

        taskMgr.add(self.eventWinSize, 'eventWinSize')

        self.scale_win = 75

    def eventWinSize(self, task):

        height = self.window.innerHeight
        width = self.window.innerWidth

        winsize = (width, height)

        if winsize != self.old_winsize:

            props = WindowProperties()
            props.size = (int(width/(100/self.scale_win)), int(height/(100/self.scale_win)))
            base.win.requestProperties(props)

        self.old_winsize = winsize

        return task.cont

Только при этом подходе нужно забыть о управлении размером холста через css.


ООП  -  
 
  • Страница 3 из 3
  • «
  • 1
  • 2
  • 3
Поиск: