|
06.12.2010, 15:17
|
#16
|
Нуждающийся
Регистрация: 11.07.2010
Сообщений: 61
Написано 3 полезных сообщений (для 3 пользователей)
|
Ответ: кубик рубика
Сообщение от Crayzi
если хош глобальную координату то EntityX#(cubes(5),True), есди локальную то EntityX#(cubes(5),False).
|
пробовал , не помогает он все равно разваливается через несколько поворотов
|
(Offline)
|
|
06.12.2010, 16:31
|
#17
|
Знающий
Регистрация: 06.12.2010
Адрес: Луганск
Сообщений: 252
Написано 112 полезных сообщений (для 166 пользователей)
|
Ответ: кубик рубика
Вероятно проблема с файлом rubik.3DS
Если убрать 26 кубиков, то видно что на нижней плоскости в середине один лишний кубик.
Но главное центр кубика расположен на его нижней гране, поэтому даже в одном и том-же месте у кубика могут быть разные координаты, в зависимости от поворота
|
(Offline)
|
|
06.12.2010, 19:04
|
#18
|
Нуждающийся
Регистрация: 11.07.2010
Сообщений: 61
Написано 3 полезных сообщений (для 3 пользователей)
|
Ответ: кубик рубика
Сообщение от RBK
Вероятно проблема с файлом rubik.3DS
Если убрать 26 кубиков, то видно что на нижней плоскости в середине один лишний кубик.
|
спасибо, если честно я не понимаю откуда он взялся
Сообщение от RBK
Но главное центр кубика расположен на его нижней гране, поэтому даже в одном и том-же месте у кубика могут быть разные координаты, в зависимости от поворота
|
да действительно, когда создавал модельку, поставил центральному кубику координаты 0, 0, 0 и забыл, что в Блитце идет отсчет от центра
сейчас попробую исправить
Последний раз редактировалось WhiteBlack, 07.12.2010 в 18:28.
|
(Offline)
|
|
06.12.2010, 19:21
|
#19
|
Нуждающийся
Регистрация: 11.07.2010
Сообщений: 61
Написано 3 полезных сообщений (для 3 пользователей)
|
Ответ: кубик рубика
Поставил координаты от центра, удалил лишний кубик, но ничего не изменилось
|
(Offline)
|
|
06.12.2010, 20:31
|
#20
|
Знающий
Регистрация: 06.12.2010
Адрес: Луганск
Сообщений: 252
Написано 112 полезных сообщений (для 166 пользователей)
|
Ответ: кубик рубика
Изменились только координаты всей группы кубиков. При загрузке ты отделяешь кубик от всей группы. Но центр каждого маленького кубика все равно в середине нижней грани после отсоединения. Поэтому ничего не изменилось.
|
(Offline)
|
|
06.12.2010, 22:24
|
#21
|
Нуждающийся
Регистрация: 11.07.2010
Сообщений: 61
Написано 3 полезных сообщений (для 3 пользователей)
|
Ответ: кубик рубика
Сообщение от RBK
Изменились только координаты всей группы кубиков. При загрузке ты отделяешь кубик от всей группы. Но центр каждого маленького кубика все равно в середине нижней грани после отсоединения. Поэтому ничего не изменилось.
|
блин странно, в максе координаты у каждого кубики были от центра, я все 26 проверил
ну хорошо пробую еще раз
|
(Offline)
|
|
06.12.2010, 22:46
|
#22
|
Нуждающийся
Регистрация: 11.07.2010
Сообщений: 61
Написано 3 полезных сообщений (для 3 пользователей)
|
Ответ: кубик рубика
RBK, скажи пожалуйста, как ты определяешь, где находится центр у фигуры в Блитце, просто каждый раз выкладывать архив для проверки, я думаю это вам неприкольно.
|
(Offline)
|
|
06.12.2010, 23:08
|
#23
|
Знающий
Регистрация: 06.12.2010
Адрес: Луганск
Сообщений: 252
Написано 112 полезных сообщений (для 166 пользователей)
|
Ответ: кубик рубика
Я из кусков твоей программы сделал тестовую программу в которой поочередно вращаются маленькие кубики.
Вот это исправление загрузит кубики правильно:
Function FindAllKubes(mesh)
Local temp
For i=1 To 26
temp=FindChild(mesh, "Box"+i) ;ищем кубик
EntityParent(temp, 0) ;отсоединяем
cubes(i)=CreatePivot();Создаем центр для кубика
;Ставим туда где должен быть центр
PositionEntity cubes(i), EntityX(temp), EntityY(temp)+10, EntityZ(temp)
EntityParent(temp, cubes(i)) ;подсоединяем кубик
Next
End Function
|
(Offline)
|
|
07.12.2010, 12:59
|
#24
|
Нуждающийся
Регистрация: 11.07.2010
Сообщений: 61
Написано 3 полезных сообщений (для 3 пользователей)
|
Ответ: кубик рубика
Сообщение от RBK
Я из кусков твоей программы сделал тестовую программу в которой поочередно вращаются маленькие кубики.
Вот это исправление загрузит кубики правильно:
Function FindAllKubes(mesh)
Local temp
For i=1 To 26
temp=FindChild(mesh, "Box"+i) ;ищем кубик
EntityParent(temp, 0) ;отсоединяем
cubes(i)=CreatePivot();Создаем центр для кубика
;Ставим туда где должен быть центр
PositionEntity cubes(i), EntityX(temp), EntityY(temp)+10, EntityZ(temp)
EntityParent(temp, cubes(i)) ;подсоединяем кубик
Next
End Function
|
странно, но это ничего не изменило, хотя идея хорошая, спасибо за мыслю
|
(Offline)
|
|
07.12.2010, 14:01
|
#25
|
Знающий
Регистрация: 06.12.2010
Адрес: Луганск
Сообщений: 252
Написано 112 полезных сообщений (для 166 пользователей)
|
Ответ: кубик рубика
Чтобы вращать весь куб или его часть нужен всего один пивот.
piv=CreatePivot();Создаем пивот для вращения
;Ставим в середину всего блока
PositionEntity piv, EntityX(cubes(5)), EntityY(cubes(10)), EntityZ(cubes(5))
Центры кубиков теперь не прыгают и нужно просто сравнить координаты чтобы найти нужные.Дальше найденные кубики присоединяем к piv. Вращаем piv в нужную сторону, отсоединяем кубики.
|
(Offline)
|
|
07.12.2010, 17:18
|
#26
|
Нуждающийся
Регистрация: 11.07.2010
Сообщений: 61
Написано 3 полезных сообщений (для 3 пользователей)
|
Ответ: кубик рубика
Сообщение от RBK
Центры кубиков теперь не прыгают и нужно просто сравнить координаты чтобы найти нужные.Дальше найденные кубики присоединяем к piv.
|
хочешь сказать, что присоединять нужно кубики? или пивоты, к которым приперэнтины кубики??
просто я попробовал к piv присоединял пивоты центральные и все равно разваливается
может все таки ошибка где-то в логике? или ты говорил, что использовал где то мой код, там работало, да?
|
(Offline)
|
|
07.12.2010, 18:42
|
#27
|
Знающий
Регистрация: 06.12.2010
Адрес: Луганск
Сообщений: 252
Написано 112 полезных сообщений (для 166 пользователей)
|
Ответ: кубик рубика
Я только сейчас заметил что ты переписал функции во втором варианте.
Зачем все так усложнять? Значение MaxY, MaxX и другие нужно определить только раз, в самом начале, а потом использовать.
Да присоединяй к piv центральные пивоты
|
(Offline)
|
|
07.12.2010, 22:51
|
#28
|
Нуждающийся
Регистрация: 11.07.2010
Сообщений: 61
Написано 3 полезных сообщений (для 3 пользователей)
|
Ответ: кубик рубика
Сообщение от RBK
Я только сейчас заметил что ты переписал функции во втором варианте.
Зачем все так усложнять? Значение MaxY, MaxX и другие нужно определить только раз, в самом начале, а потом использовать.
|
да точно спасибо , только это ничего не меняет
вся проблема в координатах: у кубиков (теперь уже у пивотов) после поворота больше чем на 270 градусов (во время четвертого поворота) появляются непонятные координаты, это глюк Блица?!
(я решил проверить, взял просто кубик присоединил его к пивоту и повернул пивоту на 90 градусов, координаты кубика были (-5; 0; 5),а стали равны (5,96046е-007; 0; -4,76837Е-007) - ЧТО ЭТО??????
как с этим справиться?
|
(Offline)
|
|
08.12.2010, 01:00
|
#29
|
быдло
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений (для 1,489 пользователей)
|
Ответ: кубик рубика
координаты глобальные берёшь?
|
(Offline)
|
|
08.12.2010, 03:30
|
#30
|
Знающий
Регистрация: 06.12.2010
Адрес: Луганск
Сообщений: 252
Написано 112 полезных сообщений (для 166 пользователей)
|
Ответ: кубик рубика
Сообщение от WhiteBlack
да точно спасибо , только это ничего не меняет
вся проблема в координатах: у кубиков (теперь уже у пивотов) после поворота больше чем на 270 градусов (во время четвертого поворота) появляются непонятные координаты, это глюк Блица?!
(я решил проверить, взял просто кубик присоединил его к пивоту и повернул пивоту на 90 градусов, координаты кубика были (-5; 0; 5),а стали равны (5,96046е-007; 0; -4,76837Е-007) - ЧТО ЭТО??????
как с этим справиться?
|
Проблема в том что координаты объектов заданы типом Float. Поворот не совсем точная операция, поэтому возможен разброс в несколько десятых.
Равенство двух чисел типа Float проверяют так:
if Abs(A#-B#) < (величина возможного разброса)
если условие выполняется числа A# и B# равны.
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо RBK за это полезное сообщение:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 09:27.
|