forum.boolean.name

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

MiXaeL 09.05.2009 13:36

Ответ: проблема c camerapick
 
Ааааргх!

Даже на форуме не раз обсуждалось.

Dzirt 09.05.2009 16:25

Ответ: проблема c camerapick
 
http://www.rubux.net/

Damp 11.05.2009 16:35

Ответ: проблема c camerapick
 
Бывает еще не пикается из-за вывернутых нормалей, при кривом экспорте.
---
Отступление по CameraPick, всегда вспоминаеься т.к. сам встревал )) - оно может тормозить даже на очень мощных компах и даже если пикать всего 1 раз за 10 циклов, почему хз, но по возможности лучше заменять на LinePick.

Sleepybear 13.05.2009 17:11

Ответ: проблема c camerapick
 
Пишу тут, что бы не создавать новой темы.

я делаю 3D меню
каждая строка меню это детеныш
когда наводиш на строку мышем она мерцает (это я сделал) подскажите а как сделать чтобы при клике на строке происходило действие?
CameraPick Возвращает номер выбранного объекта, а он, номер меняется :(
Код:

    Pick=CameraPick( MenyCamera,MouseX(),MouseY() )
    If Pick
        EntityAlpha Pick,Sin( MilliSecs() )*.5+1
;      If MouseDown(1)
;          Select
;            Case
;                               
;            Case
;                               
;            Case
;        End Select
;      EndIf
    Endif

Я догадываюсь, что както надо через имена детенышей но как их привязать к pick'ам ?
:SOS:

ABTOMAT 14.05.2009 00:06

Ответ: проблема c camerapick
 
Из теории вопроса: CameraPick возвращает хендл того объекта который пикнули. Соответственно если он совпадает с хендлом какого-л. детёныша (как ты выражаешься) то следует производить действие. Хендлы детей можно получить FindChild (если известно имя объекта в максе) или GetChild (удобно когда надо перебрать каждый). Учи матчасть. (т.е. GoTo Blitz Help)
А так код верно строишь! :super:

Код:

Pick=CameraPick( MenyCamera,MouseX(),MouseY() )
    If Pick
        EntityAlpha Pick,Sin( MilliSecs() )*.5+1
      If MouseDown(1)
          Select Pick
            Case хендл детёныша
                что делать               
            Case хендл другого детёныша
                что делать                 
            Case ну ты понял

        End Select
      EndIf
    Endif


Damp 14.05.2009 09:29

Ответ: проблема c camerapick
 
Еще разок вставлю свои 5 к :)
Pick=CameraPick( MenyCamera,MouseX(),MouseY() )
вот как раз из-за такой строки, выполняемой каждый цикл, одна простенькая игра нереально тормозила на некоторых компах, а на некоторых шла нормально.
С тех пор мне кажется, что уместно использовать только
if MouseHit(1) Pick=CameraPick( MenyCamera,MouseX(),MouseY() )
ну это имхо...
---
В твоем случае вместо
Select Pick
можно юзать
Select EntityName$(Pick)
предварительно дав всем кнопкам имена (в максе наверно меню делаешь)

Sleepybear 14.05.2009 11:46

Ответ: проблема c camerapick
 
Господа спасибо,
в перебор вставлял DebugLog EntityName$(GetChild(Meny,i))
а в Seleсt не додумался встывить :-D , видать устал вчера.

Damp
в моем случаи пикать после клика не подойдет, у меня при наведении мышем мерцание красивое (:@ чесно признаюсь гдето в примерах стырил) . Насчет тормозов, это менюшка, сделана как функция. пры выходе в меню игра встает на паузу.

ABTOMAT
Спасибо, приятно слышать

у меня сразу ещё вопрос не относящейся к делу.
DebugLog выводит что захочеш в Debugger
а какая команда выводит окно сообщений? (с кнопкой, как при ошибке)

нашел RuntimeError :)

ABTOMAT 14.05.2009 16:07

Ответ: проблема c camerapick
 
Цитата:

а какая команда выводит окно сообщений?
да, она
также можно использовать winapi (возможностей больше)

Hellfalcon 14.05.2009 22:40

Ответ: проблема c camerapick
 
Цитата:

Сообщение от ABTOMAT (Сообщение 104631)
А ты думал в сказку попал?))
Я дак вообще давно забил на блицовый пик, юзаю теперь физиксовый пик, очень удобно и главное что физ модель как раз достаточно проста чтобы её пикать без лагов.

а как физиксовым пиком тыкать по объктам мышкой (ну как в camerapick)?

ABTOMAT 15.05.2009 01:37

Ответ: проблема c camerapick
 
Цитата:

Сообщение от Hellfalcon (Сообщение 105007)
а как физиксовым пиком тыкать по объктам мышкой (ну как в camerapick)?

http://forum.boolean.name/showpost.p...20&postcount=9

Hellfalcon 15.05.2009 22:44

Ответ: проблема c camerapick
 
Цитата:

Сообщение от ABTOMAT (Сообщение 105018)

Я читал это , но я не понял, как сделать чтоб можно было тыкнуть по объекту мышкой не в центре ,а где-нибудь скраю(в любом месте экрана).

karry 21.05.2009 10:57

Ответ: проблема c camerapick
 
Развиваю тему :
Сделал пиканье по LoadAnimMesh, всё пикается, всё хорошо.
Добавил вторую камеру с маленьким вьюпортом 100x100 в уголке - перестало пикаться. Обычные меши пикаются, а составные - нет. Почему ?

Damp 21.05.2009 14:23

Ответ: проблема c camerapick
 
Может не ту камеру указываешь в CameraPick(...)

karry 21.05.2009 14:29

Ответ: проблема c camerapick
 
Я вторую камеру вообще нигде не указываю, она только создается, позиционируется, и задается вьюпорт, и всё.
secCam и mainCam перепутать трудновато.

impersonalis 21.05.2009 15:48

Ответ: проблема c camerapick
 
ты её хоть камерапроджектиш на 0?
или она у тебя на каждой итерации отрисовки юзаетцо? 2 рендера - жесть.
и главное терь логика завязана на рендере =\


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

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