Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D

Ответ
 
Опции темы
Старый 06.12.2010, 15:17   #16
WhiteBlack
Нуждающийся
 
Регистрация: 11.07.2010
Сообщений: 61
Написано 3 полезных сообщений
(для 3 пользователей)
Ответ: кубик рубика

Сообщение от Crayzi Посмотреть сообщение
если хош глобальную координату то EntityX#(cubes(5),True), есди локальную то EntityX#(cubes(5),False).
пробовал , не помогает он все равно разваливается через несколько поворотов
(Offline)
 
Ответить с цитированием
Старый 06.12.2010, 16:31   #17
RBK
Знающий
 
Аватар для RBK
 
Регистрация: 06.12.2010
Адрес: Луганск
Сообщений: 252
Написано 112 полезных сообщений
(для 166 пользователей)
Ответ: кубик рубика

Вероятно проблема с файлом rubik.3DS

Если убрать 26 кубиков, то видно что на нижней плоскости в середине один лишний кубик.

Но главное центр кубика расположен на его нижней гране, поэтому даже в одном и том-же месте у кубика могут быть разные координаты, в зависимости от поворота
(Offline)
 
Ответить с цитированием
Старый 06.12.2010, 19:04   #18
WhiteBlack
Нуждающийся
 
Регистрация: 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
WhiteBlack
Нуждающийся
 
Регистрация: 11.07.2010
Сообщений: 61
Написано 3 полезных сообщений
(для 3 пользователей)
Ответ: кубик рубика

Поставил координаты от центра, удалил лишний кубик, но ничего не изменилось
Вложения
Тип файла: rar кубик Рубика.rar (7.6 Кб, 484 просмотров)
(Offline)
 
Ответить с цитированием
Старый 06.12.2010, 20:31   #20
RBK
Знающий
 
Аватар для RBK
 
Регистрация: 06.12.2010
Адрес: Луганск
Сообщений: 252
Написано 112 полезных сообщений
(для 166 пользователей)
Ответ: кубик рубика

Изменились только координаты всей группы кубиков. При загрузке ты отделяешь кубик от всей группы. Но центр каждого маленького кубика все равно в середине нижней грани после отсоединения. Поэтому ничего не изменилось.
(Offline)
 
Ответить с цитированием
Старый 06.12.2010, 22:24   #21
WhiteBlack
Нуждающийся
 
Регистрация: 11.07.2010
Сообщений: 61
Написано 3 полезных сообщений
(для 3 пользователей)
Ответ: кубик рубика

Сообщение от RBK Посмотреть сообщение
Изменились только координаты всей группы кубиков. При загрузке ты отделяешь кубик от всей группы. Но центр каждого маленького кубика все равно в середине нижней грани после отсоединения. Поэтому ничего не изменилось.
блин странно, в максе координаты у каждого кубики были от центра, я все 26 проверил
ну хорошо пробую еще раз
(Offline)
 
Ответить с цитированием
Старый 06.12.2010, 22:46   #22
WhiteBlack
Нуждающийся
 
Регистрация: 11.07.2010
Сообщений: 61
Написано 3 полезных сообщений
(для 3 пользователей)
Ответ: кубик рубика

RBK, скажи пожалуйста, как ты определяешь, где находится центр у фигуры в Блитце, просто каждый раз выкладывать архив для проверки, я думаю это вам неприкольно.
(Offline)
 
Ответить с цитированием
Старый 06.12.2010, 23:08   #23
RBK
Знающий
 
Аватар для RBK
 
Регистрация: 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
WhiteBlack
Нуждающийся
 
Регистрация: 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
RBK
Знающий
 
Аватар для RBK
 
Регистрация: 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
WhiteBlack
Нуждающийся
 
Регистрация: 11.07.2010
Сообщений: 61
Написано 3 полезных сообщений
(для 3 пользователей)
Ответ: кубик рубика

Сообщение от RBK Посмотреть сообщение
Центры кубиков теперь не прыгают и нужно просто сравнить координаты чтобы найти нужные.Дальше найденные кубики присоединяем к piv.
хочешь сказать, что присоединять нужно кубики? или пивоты, к которым приперэнтины кубики??
просто я попробовал к piv присоединял пивоты центральные и все равно разваливается
может все таки ошибка где-то в логике? или ты говорил, что использовал где то мой код, там работало, да?
(Offline)
 
Ответить с цитированием
Старый 07.12.2010, 18:42   #27
RBK
Знающий
 
Аватар для RBK
 
Регистрация: 06.12.2010
Адрес: Луганск
Сообщений: 252
Написано 112 полезных сообщений
(для 166 пользователей)
Ответ: кубик рубика

Я только сейчас заметил что ты переписал функции во втором варианте.
Зачем все так усложнять? Значение MaxY, MaxX и другие нужно определить только раз, в самом начале, а потом использовать.

Да присоединяй к piv центральные пивоты
(Offline)
 
Ответить с цитированием
Старый 07.12.2010, 22:51   #28
WhiteBlack
Нуждающийся
 
Регистрация: 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
Dream
быдло
 
Регистрация: 05.08.2007
Сообщений: 1,435
Написано 614 полезных сообщений
(для 1,489 пользователей)
Ответ: кубик рубика

координаты глобальные берёшь?
(Offline)
 
Ответить с цитированием
Старый 08.12.2010, 03:30   #30
RBK
Знающий
 
Аватар для RBK
 
Регистрация: 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 за это полезное сообщение:
tormoz (08.12.2010), WhiteBlack (08.12.2010)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 06:38.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com