21 Февраля 2025, 21:11:51
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Навигация по форуму







guest3d
Просмотр сообщений
[1] 2 3 ... 7
 1  Quest3D / Программирование / Re: Динамическая загрузка : 06 Июня 2012, 16:49:45
Цитировать
Но опять же работает всё от полного пути к файлу, а от корневой папки читать не хочет.

Проект локальный или web? Экспорт в exe? С web я не работал. С локальными проектами все работает, если использовать относительный путь ".\" Для некоторых каналов требуется полный путь, его можно получить, пропустив относительный через канал "text operator".
Если паблишь в exe, то тут все сложнее - сам exe-файл представляет собой архив с файлами проекта и quest3d-плеером. Т.е. при запуске все это дело распаковывается в temp и запускается оттуда, следовательно и относительный путь будет строится не от папки с exe, а от temp-директории.
 2  Quest3D / Программирование / Re: Как работает Load ChannelGroup : 03 Июня 2012, 00:20:31
Если я правильно понял, надо загрузить в память группу из папки и подцепить паблик-канал.

Загрузка файла с группой в файл -

Сздаем луа-канал и в нем пишем (кстати есть в мануале)-

function CallChannel()
   local filename = channel.GetChild(0) //путь к файлу
   local poolname= channel.GetChild(1) //Имя группы в проекте
   local index = channel.GetChild(2) // индекс
   local progress = channel.GetChild(3)    //статус загрузки
   
   q.LoadChannelGroupDQ(filename:GetText(),poolname:GetText(),index:GetValue(),poolname:GetText())
   progress:SetValue(q.GetDQProgress(poolname:GetText()))

end

Цепляем паблик-канал из загруженной группы-
создаем луа-канал и в нем пишем-

function CallChannel()
local groupName = channel.GetChild(0); //Имя группы в проекте (то что указывали при загрузке)
local channelName = channel.GetChild(1); //Имя паблик-канала к которому хотим обратиться.

  object =  channel.GetPublicFromGroup(groupName:GetText(), channelName:GetText()); // присваем ссылку на наш паблик-канал по имени группы и имени
  if object ~= nil then //если ссылка верная
    object:CallChannel(); //обращаемся к нему
  end
end

Если нужно получить значение или текст, то используем соответственно
local myValue =object:GetValue(); //переменная myValue будет содержать результат
и
local myText =object:GetText();//переменная myText будет содержать результат


Как сделать без луа, к сожалению, не знаю.
 3  Quest3D / Визуализация, Шейдеры / Re: Дергание изображения во вьюпорте при вызове канала RTT : 12 Сентября 2011, 06:32:59
Похоже проблема в функции "Set Viewport". Когда поменял ее на функцию "Set Viewport in pixels" проблема ушла.  Смеющийся Ура!
 4  Quest3D / Визуализация, Шейдеры / Re: Дергание изображения во вьюпорте при вызове канала RTT : 12 Сентября 2011, 06:19:20
Привет, Sqwer.
Спасибо, что помогаешь.
Порядок отрисовки, вроде, верный. Насчет чтения тектуры тоже не уверен.
Тут проще показать, чем описать ситуацию.
Прикрепляю файл.
Смысл в том, что после того, как RTT уже был вызван и размеры вьюпорта востановлены, рисуется объект без всяких RTT, но разрешение после восстановления всеже отличается от разрешения предыдущего кадра на пару пикселей.
В сцене это видно. В текстовый канал добавляются строки о том, что значения разрешений не верные, если они не равны референсу - разрешению, которое было вначале. Т.е. При каждом вызове RTT разрешение вывода отличается. Откуда этот баг - хз(.
З.Ы.При ресайзе окна вручную, надо нажать пробел, что бы обновить эти значения.
 5  Quest3D / Визуализация, Шейдеры / Дергание изображения во вьюпорте при вызове канала RTT : 09 Сентября 2011, 02:36:15
Всем привет.

Столкнулся с небольшим багом.
Все динамически создаваемые текстуры, например, привьюшки моделек, всплывающие подсказки и тд создаются одним вызовом РТТ в необходимом разрешении. Чаще это разрешение меньше размера вьюпорта и приходится менять его размеры на время создания.
Если за текущий кадр был вызов такой функции(со сменой размеров вьюпорта), то конечное изображение меняется. Толи смещается на пиксель, толи маштабируется, но оно отличается от того, что должно быть. А так как смещение происходит только за один кадр, то это смотрится как дерганье финальной картинки в момент, когда вызывалась подобная функция.
Иногда помогает ресайз основного вьюпорта после запуска проекта, иногда - смена последовательности вызовов функций. Вобщем, бред какой-то.
Что является причиной такого поведения? Может кто то уже сталкивался с этим и решил проблему?
 6  Quest3D / Логика / Re: Отключение рамки и заднега фона : 22 Июля 2011, 02:43:42
Цитировать
Как сделать что бы при запуске .exe файла в оконном режиме видимым был только трёхмерный объект, задний фон и рамка приложения исчезали, отключались или становились невидимыми, как во многих программах?

Что бы убрать рамку и прочее(т.е. сменить стиль окна), достаточно использовать для этого канал "Win32 SetWindow" и в его свойствах поставить, что надо.

А вот что бы ДХ окно было с прозрачным фоном - врятли. Но сделать такой эффект все же можно -
1 способ - делать скриншот фрагмента рабочего стола и подставлять на задний фон в ДХ-окно.
2. способ - рендерить сцену в тектуру с альфой, а выводить ее уже другими методами, т.е. не через ДХ.
Если в первом случае может помочь сдк, то для второго хз.
 7  Quest3D / Логика / Re: Красивое GUI : 20 Июля 2011, 20:07:18
Собрал простой пример GUI с CopyImage. Есть окошки и кнопки, правда сортировку окон отрубил - по какой то, мне неведомой, причине, слетают идшки скинов и пропадают текстовые команды из ячеек массива после сортировки. ХЗ почему, может ктото допилит пример и сделает сортировку) Я массивы давно не юзал - на ОО и скриптах все же как-то проще все делается. Смеющийся

Анимацию не сделал, но там такая же суть как и в моем примере с бочками в теме http://guest3d.wohlnet.ru/forum/index.php?topic=1905.0.
 8  Quest3D / Общие вопросы / Вопрос лицензирования продукта, построенного на базе движка Quest3D. : 19 Июля 2011, 15:58:09
Всем привет.

У меня вопрос, кто-нибудь сталкивался с лицензированием приложения, построенном на Quest3D? Или может быть кто то вообще сталкивался с лицензированием?

Как я понял, надо предоставлять несколько первых и последних страниц кода и т.д. Но Quest3D - среда визуального программирования, нужно предоставлять скриншоты графа? ) Я так понимаю, что надо еще прикладывать рабочую документацию и т.д. Какие могут быть подводные камни при лицензировании вообще?

Спасибо.
 9  Quest3D / Логика / Re: Как сделать,чтобы на каждый клик по левой кнопкой мыши появилась картинка ?? : 10 Июля 2011, 21:56:14
Цитировать
так вот мне нужно чтобы после появлении,если не нажимать на Enter повторно примерно до 10 секунд,то после 10-и секунд они АВТОМАТИЧЕСКИ ИСЧЕЗАЛИ.

Типа того что-то.
 10  Quest3D / Визуализация, Шейдеры / Re: несколько шейдеров на объект : 09 Июля 2011, 16:59:54
Цитировать
Такое может понадобиться, если нужно для каждого сурфейса иметь свою матрицу, а так же нужна возможность отсекать невидимый в камеру мешь, или фрустум нужен по расстоянию.

С этим согласен, но это же не имеет никакого отношения к уникальным шейдерам на какую либо часть объекта!?
Впрочим, разобрались. Смеющийся

В любом случае, мне было проще резать мешь на части по материалам в редакторе, т.к. уже в максе можно было задать нормальные имена для каждой. И после импорта объекта в квест уже было видно, что это за часть. А если использовать ОО, так вообще можно автоматом материалы назначать при инициализации объекта. Вобщем, кому как удобнее..
 11  Quest3D / Логика / Re: Проверка условия внутри цикла : 09 Июля 2011, 00:35:50
Jon
Как реализаван менеджер объектов? Если используешь ОО, то там все просто реализуется. Рекомендую посмотреть, как сделано в квестовом примере с остеройдами.
В любом случае смысл следующий -
Создаешь дополнительные значения в интерфейсе объекта или в таблице.
1. Текущее значение анимации.
2. Целевое значение анимации.
З. Скорость анимации
4. Количество кадров в анимации.
Эта группа значений должна быть уникальной для каждого объекта. Далее по условиям наращиваешь или уменьшаешь текущее значение.
Например, если целевое значение отличается от текущего, значит проверяем оно больше или меньше. Если больше, то к текущему прибавляем дельту, умножнное на скорость и тиккаунт. Таким образом, каждый раз мы увиличиваем текущее значение, пока оно не сравняется с целевым.
Я обычно использовал интервал 0.0-1.0, а потом домножал это значение на количество кадров в анимации.
Тут есть еще один бонус. В случае, когда целевое значение менше текущего, то уменьшая его также плавно, можно проиграть анимацию в обратном направлении. А можно просто присваивать целевое значение, тогда получится резкий возврат в начало таймлайна.

Изменил пример, но так как я не использовал анимированных объектов, а дергал позицию и размер, то параметр количества кадров не понадобился. А так же ничего не делал с проверкой наведения.
 12  Quest3D / Визуализация, Шейдеры / Re: несколько шейдеров на объект : 09 Июля 2011, 00:03:07
прочитал несколько раз и так и не понял, зачем создавать отдельный 3добжект для каждого сюрфейса. Отдельный шейдер можно линковать к каждому из сюрфейсов. Или речь о глобалшейдере? С глобалшейдером вопрос можно решить условиями в коде шейдера или несколькими его вызовами, но условиями отключать не нужные для текущего шейдера сюрфейсы.
 13  Quest3D / Общие вопросы / Re: Будущее Quest3d ??? : 24 Июня 2011, 14:01:22
 Рот на замке
 14  Quest3D / Физика / Re: движение в направлении курсора : 22 Июня 2011, 12:37:45
Посмотрел сценку. Мне инерция понравилась Улыбающийся Немного сложности в управление добавляет.
Но, честно говоря, я немного по иному представлял то, чего нужно добиться. Тут получается, что нужно анализировать не расстояние, а скорость и ее направление относительно позиции цели. Если объект движется в противоположную сторону от цели, то надо прикладывть бОльшую силу, направленную в сторону цели.

Незнаю, что я сделал, но инерция заметно поубавилась Смеющийся Смущает то, что скорость пришлось поднять в разы. Позже еще поэкперементирую.
 15  Quest3D / Физика / Re: движение в направлении курсора : 21 Июня 2011, 00:22:12
Цитировать
если передавать в  сет спид, то не работает. А если set/add force, то объект вначале двигается в нужном направлении, а потом, при изменении позиции мыши, ведет себя неодекватно(((

На данный момент у меня такой загруз, что поэксперементировать со сценой никак не могу выкроить время(

С физикой схема сложнее будет, чем просто добавление вектора -
1. Если нужна остановка объекта в указанной точке, то надо ставить условие, что бы объект стал снижать скорость заранее, что бы не проехать ее, либо применять противоположную силу, что бы его резко тормознуть, но это будет не естественно смотреться.
2. Когда меняешь позицию цели, объект будет заносить из-за инерции(если он, конечно, имеет массу), поэтому вектор движения, возможно, придется постоянно корректировать, либо делать так, что бы объект продолжал двигаться со старым направлением, но снизил скорость до 0, а только потом стал передвигаться в новую позицию.

Сможешь выложить тестовую сценку, где есть только то, что нужно для моделирования ситуации?
[1] 2 3 ... 7