forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Проблема с CameraPick (http://forum.boolean.name/showthread.php?t=19972)

Unvid 31.08.2015 15:37

Проблема с CameraPick
 
Добрый день!

Вчера я натолкнулся на такую вот проблему:

CameraPick ведет себя словно шар выше чем он есть на самом деле, как видно на картинке. Шар 100% неподвижный.
Пробовал ставить EntityPickMode на 1, 2, 3, пробовал вставлять туже функцию в разные места (до PositionEntity и после).
Единственная операция которая производятся с камерой это TurnEntity camera,MouseYSpeed(),0,0.

Код:

(из функции которая вызывается в главном цикле перед UpdateWorld и RenderWorld)
Код:

        mouseover_msg = ""
       
        Local e = CameraPick(camera, GraphicsWidth()*0.5, GraphicsHeight()*0.5)
        If Not e Then Return
        If Not EntityName(e) Then Return
       
        it.item_ground = Object.item_ground(EntityName(e))
        If it <> Null
                mouseover_msg = it\parent\name
        EndIf

(из функции которая создает item_ground)
Код:

        it.item_ground = New item_ground
        it\entity = CreateSphere()
       
        EntityPickMode it\entity, 3
        EntityColor it\entity, 0, 255, 0
        NameEntity it\entity, Handle(it)
        PositionEntity it\entity, x, y, z
       
        it\parent = i

Вобщем я в тупике. Буду благодарен любой помощи!

SBJoker 31.08.2015 15:43

Ответ: Проблема с CameraPick
 
Последний раз использовал блитз около 10 лет назад, но помню там был баг с EntityPick если объект находится строго в позиции (0, 0, 0)

А вообще выглядит так что Bounding Box криво задан.

Unvid 31.08.2015 16:23

Ответ: Проблема с CameraPick
 
Координаты не 0;0;0

Когда я добавил коллизию с полом и "TranslateEntity it\entity, 0, -g, 0" с g#=1.0, то проблема пропала.
Однако когда g не равен 1.0, то проблема возвращается - если g выше 1, то шар уходит "вниз" (хотя визуально он на полу). Меньше 1, и он всё ещё "наверху". На коллизии это не влияет; только на CameraPick

ScaleEntity также плохо работает с CameraPick, судя по всему

L-ee-X 31.08.2015 17:09

Ответ: Проблема с CameraPick
 
а если попробовать ScaleMesh?

Кирпи4 02.09.2015 17:15

Ответ: Проблема с CameraPick
 
Цитата:

Сообщение от Unvid (Сообщение 299135)
Координаты не 0;0;0

Когда я добавил коллизию с полом и "TranslateEntity it\entity, 0, -g, 0" с g#=1.0, то проблема пропала.
Однако когда g не равен 1.0, то проблема возвращается - если g выше 1, то шар уходит "вниз" (хотя визуально он на полу). Меньше 1, и он всё ещё "наверху". На коллизии это не влияет; только на CameraPick

ScaleEntity также плохо работает с CameraPick, судя по всему

Не будем забывать, что коллизии разбирает функция UpdateWorld, а ты пикаешь до её вызова - отсюда и некорректные результаты

ABTOMAT 03.09.2015 02:00

Ответ: Проблема с CameraPick
 
http://www.blitzbasic.com/b3ddocs/co...e=EntityRadius
http://www.blitzbasic.com/b3ddocs/co...EntityPickMode

При EntityPickMode "сфера" используется EntityRadius для расчётов.

Сфера просто сфера, без иерархии?

LLI.T.A.L.K.E.R. 03.09.2015 17:32

Ответ: Проблема с CameraPick
 
а не может быть, что центр пика камеры смещён?
относительно экрану шиндошс?

скорее всего в этом и причина.
помню бывало неладное когда переносил проект с эвм меньшего разрешения экрана, на эвм с большим р.э.

IgorOK 03.09.2015 18:49

Ответ: Проблема с CameraPick
 
Цитата:

Сообщение от LLI.T.A.L.K.E.R. (Сообщение 299279)
а не может быть, что центр пика камеры смещён?
относительно экрану шиндошс?

скорее всего в этом и причина.
помню бывало неладное когда переносил проект с эвм меньшего разрешения экрана, на эвм с большим р.э.

Вряд ли.

Цитата:

Local e = CameraPick(camera, GraphicsWidth()*0.5, GraphicsHeight()*0.5)
Unvid, скинь весь код.


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot