[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Форум Panda3D - по русски » Panda3D » Общие вопросы » Центр объекта (Как изменять центр объекта в панде?)
Центр объекта
liquideДата: Воскресенье, 20.04.2014, 19:10 | Сообщение # 16
Сержант
Группа: Пользователи
Сообщений: 35
Награды: 0
Репутация: 0
Статус: Offline
Появилась проблема с упаковыванием в p3d. При запуске пишет, что
  

Я потом взял ваш пример, немного поменял его в плане отдельно файл main.py сделал и файл NURBSmopath но все тоже самое (на картинке выше как раз его ошибка). Архив папки с вашим примером который хочу запаковать здесь 

Так все работает если запускать main.py. Но когда запакованый в p3d запускаешь то такая ошибка. При самом упаковывании вроде ошибки нет. 

быть может надо при упаковывании указывать что есть NURBS? или в чем ошибка?
 
ninthДата: Воскресенье, 20.04.2014, 23:01 | Сообщение # 17
Admin
Группа: Администраторы
Сообщений: 1582
Награды: 5
Репутация: 46
Статус: Offline
Похоже что не срабатывает опция "egg-load-old-curves 0".
Попробуй записать её в основной Config.prc и заново упаковать. Если не поможет, то надо будет на официальном форуме уточнять почему так происходит при упаковке.
 
liquideДата: Вторник, 29.04.2014, 14:54 | Сообщение # 18
Сержант
Группа: Пользователи
Сообщений: 35
Награды: 0
Репутация: 0
Статус: Offline
Не помогло, придется спрашивать на оф форуме

Добавлено (22.04.2014, 02:26)
---------------------------------------------
На форуме только один человек предположил, что возможно при паковании был потерян файл nurbs.egg или потерял свои свойства. Я с помощью multify -x вытащил все файлы, взял nurbs.bam, поместил в оригинал и с ним попытался запустить программу и он выдал ту же ошибку. 


Есть идеи как это победить? Может можно как то оригинальный egg засунуть в p3d?

Добавлено (29.04.2014, 14:54)
---------------------------------------------
Даже засунув nurbs.egg в Nurbs.p3d, теперь он пишет, что не может загрузить egg модель. В документации написано, что если вы хотите оставить модель без изменений, то надо использовать ppackage, но я не могу найти нормального мануала по ppackage.

 
ninthДата: Вторник, 29.04.2014, 19:51 | Сообщение # 19
Admin
Группа: Администраторы
Сообщений: 1582
Награды: 5
Репутация: 46
Статус: Offline
Там суть немного в другом - я все эти варианты проверил. Проблема именно в том что загружаются кривые в старом стиле, поэтому модуль не может найти нужных кривых в файле.
Тебе обязательно нужен p3d файл (для браузера, например), или тебе просто нужно сделать исполняемое приложение?
 
liquideДата: Вторник, 29.04.2014, 20:16 | Сообщение # 20
Сержант
Группа: Пользователи
Сообщений: 35
Награды: 0
Репутация: 0
Статус: Offline
Цитата ninth ()
Там суть немного в другом - я все эти варианты проверил. Проблема именно в том что загружаются кривые в старом стиле, поэтому модуль не может найти нужных кривых в файле. Тебе обязательно нужен p3d файл (для браузера, например), или тебе просто нужно сделать исполняемое приложение?

Мне исполняемый файл нужен, чтобы он работал потом на линуксе и на mac os, я думал чтобы сделать на браузере, но можно и без браузера.
Хм, а может есть вариант сделать с помощью старых кривых? или быть может стоит создавать кривую nurbs прям в самой программе? конечно это будет немножко дольше, но может тогда он будет работать? и в чем именно минус старых кривых?
 
ninthДата: Вторник, 29.04.2014, 20:55 | Сообщение # 21
Admin
Группа: Администраторы
Сообщений: 1582
Награды: 5
Репутация: 46
Статус: Offline
Старые кривые не имели визуализации. Возможно какие-то косяки в реализации были, но наверняка не помню. Зато на старые кривые вроде был встроенный mopath без стороннего модуля https://www.panda3d.org/manual/index.php/Motion_Paths
Попробуй с ними поиграть.
 
liquideДата: Пятница, 02.05.2014, 15:41 | Сообщение # 22
Сержант
Группа: Пользователи
Сообщений: 35
Награды: 0
Репутация: 0
Статус: Offline
Цитата ninth ()
Старые кривые не имели визуализации. Возможно какие-то косяки в реализации были, но наверняка не помню. Зато на старые кривые вроде был встроенный mopath без стороннего модуля https://www.panda3d.org/manual/index.php/Motion_Paths Попробуй с ними поиграть.

Поиграться как то не получается. Во первых через Mopath их очень сложно изменять и вращать. Во вторых Mopath вообще не реагирует даже на ваш еще файл nurbs.egg. Пишет что Mopath: Mopath has no curves. 
Может есть возможность создать исполняемый файл с новыми кривыми? С ними как то удобнее все.
 
ninthДата: Пятница, 02.05.2014, 21:54 | Сообщение # 23
Admin
Группа: Администраторы
Сообщений: 1582
Награды: 5
Репутация: 46
Статус: Offline
Код
myModel = loader.loadModel('nurbs')
curveNode = myModel.find("**/+NurbsCurve")
myMopath = Mopath()
myMopath.loadNodePath(curveNode)
Попробуй так. Это по поводу 'has no curves'

А исполняемый файл когда надо я делал с помощью cxFreeze, только пандовские библиотеки надо было рядом с исполняемым файлом свалить.
 
liquideДата: Суббота, 03.05.2014, 01:59 | Сообщение # 24
Сержант
Группа: Пользователи
Сообщений: 35
Награды: 0
Репутация: 0
Статус: Offline
Цитата ninth ()
А исполняемый файл когда надо я делал с помощью cxFreeze, только пандовские библиотеки надо было рядом с исполняемым файлом свалить.

А что за cxFreeze? И как им пользоваться? 

По поводу Curves, все так же бестолку. Ругается на строчку myMopath = Mopath() типо module object is not callable. Думал привести к такому виду myMopath = Mopath.Mopath(), как в документации, но тогда на следующую строчку ругается. В общем ерунда какая то полнейшая, лучше с новыми провозиться и придумать как в файл запаковать все.
 
ninthДата: Суббота, 03.05.2014, 22:46 | Сообщение # 25
Admin
Группа: Администраторы
Сообщений: 1582
Награды: 5
Репутация: 46
Статус: Offline
cxFreeze - утилита для создания исполняемого файла из питоновских скриптов. В сети мануалки должны быть. Я по какой-то из них делал. Можно ещё посмотреть GUI2Exe - более дружелюбная обёртка над cxFreeze и ему подобным.

Вот полностью рабочий код с тем куском который я ранее приводил

Код
from panda3d.core import *
from direct.directbase import DirectStart
from direct.directutil.Mopath import Mopath
from direct.interval.MopathInterval import *
myModel = loader.loadModel('nurbs')
curveNode = myModel.find("**/+NurbsCurve")
myMopath = Mopath()
myMopath.loadNodePath(curveNode)
myMopath.fFaceForward = True
myCube = loader.loadModel("yup-axis")
myCube.setScale(0.1)
myCube.reparentTo(render)
myInterval = MopathInterval(myMopath, myCube, duration=10 ,name = "Name")
myInterval.start()
base.disableMouse()
base.camera.setPos(15,15,15)
base.camera.lookAt(0,0,0)
run()
 
liquideДата: Вторник, 27.05.2014, 05:08 | Сообщение # 26
Сержант
Группа: Пользователи
Сообщений: 35
Награды: 0
Репутация: 0
Статус: Offline
Цитата ninth ()
cxFreeze - утилита для создания исполняемого файла из питоновских скриптов. В сети мануалки должны быть. Я по какой-то из них делал. Можно ещё посмотреть GUI2Exe - более дружелюбная обёртка над cxFreeze и ему подобным.

Спасибо, попробую им воспользоваться.

На счет кода, вы не поверите, но он тоже отказывается работать почему то =) и все так же ругается на myMopath.loadNodePath(curveNode) . Но ладно, это уже не так важно.

Добавлено (27.05.2014, 05:08)
---------------------------------------------
Возвращаясь к Mopath, есть ли возможность сделать неравномерное движение? с замедлением и ускорением в определенных точках?

 
ninthДата: Среда, 28.05.2014, 13:45 | Сообщение # 27
Admin
Группа: Администраторы
Сообщений: 1582
Награды: 5
Репутация: 46
Статус: Offline
Если точки заранее известны, то просто попробуй подвигать узлы кривой. В блендере, например можно примерно видеть где скорость выше, а где - ниже.
Если же скорость должна регулироваться какими-то независимыми внешними факторами, то надо смотреть, возможно делать свой цикл движения.
 
liquideДата: Четверг, 29.05.2014, 00:15 | Сообщение # 28
Сержант
Группа: Пользователи
Сообщений: 35
Награды: 0
Репутация: 0
Статус: Offline
Цитата ninth ()
Если точки заранее известны, то просто попробуй подвигать узлы кривой. В блендере, например можно примерно видеть где скорость выше, а где - ниже. Если же скорость должна регулироваться какими-то независимыми внешними факторами, то надо смотреть, возможно делать свой цикл движения.
Хм, попробую в блендере точки поставить реже. Просто я построил 360 точек и расставил их в правильном порядке по кругу. 
А как делать цикл движения? есть пример какой нибудь, чтобы понять как это реализуется хотя бы.
 
ninthДата: Четверг, 29.05.2014, 10:20 | Сообщение # 29
Admin
Группа: Администраторы
Сообщений: 1582
Награды: 5
Репутация: 46
Статус: Offline
Цитата liquide ()
А как делать цикл движения? есть пример какой нибудь, чтобы понять как это реализуется хотя бы.

Посмотри исходник nurbs_mopath. Метод goTo (goTo_with_default_rotation) устанавливает объект в некоторую точку t на кривой. t между 0 и 1. 0 - начало кривой, 1 - конец.
Ну либо исходник родного NurbsMopath для старого варианта кривых.
 
liquideДата: Пятница, 13.06.2014, 09:26 | Сообщение # 30
Сержант
Группа: Пользователи
Сообщений: 35
Награды: 0
Репутация: 0
Статус: Offline
Непонятки у меня с p3d какие то. В общем у меня есть в корне main.py. В папке modules четыре файла Init_scene.py, Zakon1.py, Zakon2.py, Zakon3.py. Чтобы перейти скажем из закона3 в закон1 я пишут так вверху import __main__ , а когда надо вызов __main__.Zakon1() . И все работает. Стоит мне все запаковать в p3d так происходят какие то чудеса. Теперь я могу перейти из Init_scene в Zakon1 или Zakon2 или Zakon3, из Zakon1 только в Zakon2 или в Zakon3, из Zakona2 только в Zakon3, во всех остальных случаях я получаю ошибку AttributeError: 'module' object has no attribute тут что вызываю. если Init_scene() то пишет что AttributeError: 'module' object has no attribute 'Init_scene' . Почему так? я разве неправильно вызываю? в main.py я импортирую все заранее. И почему без упаковки все работает, а в p3d начинается такая фигня? А еще мне очень интересно, почему именно в такой последовательности все работает?
 
Форум Panda3D - по русски » Panda3D » Общие вопросы » Центр объекта (Как изменять центр объекта в панде?)
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Поиск: