Центр объекта
|
|
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 начинается такая фигня? А еще мне очень интересно, почему именно в такой последовательности все работает?
|
|
| |