forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Xors3D (http://forum.boolean.name/forumdisplay.php?f=126)
-   -   2д координаты в мировые (http://forum.boolean.name/showthread.php?t=14641)

Medan 28.04.2011 00:13

2д координаты в мировые
 
Подскажите, какой функцией, используя координаты курсора, узнать координаты в мире(то место на terrain'e, где находится курсор).
В справке там только с объектами такие функции.

В общем, подобно функции xCameraPick, но чтобы можно было получить координаты не объекта, а точки в мире.

Ну думаю понятно

HolyDel 28.04.2011 06:18

Ответ: 2д координаты в мировые
 
в блице был PickedX, PickedY, PickedZ
тут наверное будет xPickedX(), xPickedY(), xPickedZ()

Medan 28.04.2011 12:37

Ответ: 2д координаты в мировые
 
Я же объясняю, надо координаты не объекта, а точки в мире, где находился курсор.
Цитата:

xPickedX(), xPickedY(), xPickedZ()
Это дает координаты объекта.

Nex 28.04.2011 12:41

Ответ: 2д координаты в мировые
 
Как раз таки это дает 3д координаты курсора.

Medan 28.04.2011 13:18

Ответ: 2д координаты в мировые
 
Цитата:

Как раз таки это дает 3д координаты курсора.
Тогда покажите примером.
Т.к. у меня координаты объекта дает, если курсор нах. не на объекте, то эти ф-ции возвращают по нулям.

SBJoker 28.04.2011 14:51

Ответ: 2д координаты в мировые
 
Дорогой друг, вот представь себе такую вешь, экран представляющий из себя плоскость и точка на нём координаты который ты хочешь узнать в 3D пространстве. Точка ли это в 3D пространстве? На первый взгляд точка, а если посмотреть на это сбоку? Опа-на это же бесконечная линия! Которая исходит из точки экрана и идёт от экрана вдаль. Получается координаты получить невозможно, т.к. неизвестно на каком удалении от камеры ты желаешь получить точку на этой прямой. Чтобы как то её указать нужно эту линию с чем то пересечь... На эту роль подойдёт любая плоскость или объект. Место пересечения линии и объекта и даст нам точку.

Понятно объяснил?

Medan 28.04.2011 16:45

Ответ: 2д координаты в мировые
 
Цитата:

Опа-на это же бесконечная линия!
Поэтому.... Я и говорил.... что
Цитата:

узнать координаты в мире(то место на terrain'e, где находится курсор)

Medan 28.04.2011 16:48

Ответ: 2д координаты в мировые
 
И опять же, функция, которую указал в 1ом посте. Она возвращает, не точку координат, где находится курсор, а лицо(объект) на котором находится курсор. Разве в 1ом посте я не понятно объяснил суть проблемы?

SBJoker 28.04.2011 17:13

Ответ: 2д координаты в мировые
 
Слушай сюда: ты тупой, смирись с этим.
Ты же сам пишещь что:
> узнать координаты в мире(то место на terrain'e, где находится курсор)
Вот и делай ему CameraPick.

maxturbo 28.04.2011 19:44

Ответ: 2д координаты в мировые
 
Вложений: 1
Цитата:

Сообщение от Medan (Сообщение 186927)
И опять же, функция, которую указал в 1ом посте. Она возвращает, не точку координат, где находится курсор, а лицо(объект) на котором находится курсор. Разве в 1ом посте я не понятно объяснил суть проблемы?

Держи пример...
PHP код:

Graphics3D 1024,768,32,2
SetBuffer BackBuffer
()
Type obj
    Field mesh
%
    
Field name$
End Type
Global flag
Global cam=CreateCamera()
    
CameraRange cam,0.1,10000
    TurnEntity cam
,45,0,0
    MoveEntity cam
,0,100,0
TurnEntity CreateLight
(),45,45,0
map
=LoadMesh("data\mesh.b3d")
EntityPickMode map,2
;Грузим меши
a
.obj=New obj
    a
\mesh=CreateCube()
    
a\name="cub"
    
HideEntity a\mesh
Repeat
;схватываем нажата ли мышь
mouse1
=MouseHit(1)
обзор камерой
If KeyDown(200Then TranslateEntity cam,0,0,20
If KeyDown(208Then TranslateEntity cam,0,0,-20
If KeyDown(203Then TranslateEntity cam,-20,0,0
If KeyDown(205Then TranslateEntity cam,20,0,0
выбарнный обьект
If KeyHit(2flag=1
CameraPick
(cam,MouseX(),MouseY()); пикаем 
Select flag 
в зависимости от флага 
    
Case 1
        
For a.obj=Each obj
            HideEntity a
\mesh
            
If a\name="cub"
                
PositionEntity a\mesh,PickedX(),PickedY(),PickedZ() ; ставим меш куда нужно 
                ShowEntity a
\mesh
                    
If mouse1=True Then если нажата клавиша ставим куда нужно копию меша
                        copy
=CopyEntity(a\mesh)
                        
PositionEntity copy,PickedX(),PickedY(),PickedZ()
                    
End If
            
End If
            
Next
End Select

RenderWorld
Text 10
,10,"Чтоб выбрать куб нажмите клавишу 1"
Flip
Until KeyHit
(1)
End 

Справка самый лучший друг программиста :) Там все подробно описано...
Если работаешь на Xors3D не забудь изменить команды на ксорсовские...
Прилагаю media к примеру.

Medan 28.04.2011 23:09

Ответ: 2д координаты в мировые
 
Цитата:

Слушай сюда: ты тупой, смирись с этим.
Ты же сам пишещь что:
> узнать координаты в мире(то место на terrain'e, где находится курсор)
Вот и делай ему CameraPick.
А ты не тупой?
Раз я говорю что функция camerapick в дальнейшем возвращает КООРДИНАТЫ ОБЪЕКТА, А НЕ ТОЧКИ КУРСОРА!!!!!!!! ЕСЛИ ОБЪЕКТ СТОИТ В КООРДИНАТАХ 0;0;0 ТАК ЭТО Ф-ЦИЯ И ВОЗВРАЩАТЬ ВСЕГДА БУДЕТ 0;0;0, при нахождении курсора на объекте, И НИКОГДА НЕ ВОЗВРАТИТ 0;0;1!
Так я понял, на примере своей работы с этой функцией.
А если я и не прав, это не позволяет так относиться к людям.
Тебе вряд ли 14 лет. Так и вести себя надо подобающе.

Если все люди будут говорить друг другу "Ты тупой. Ты тупой" из-за того, что кто-то что-то не понял. То будет полный п****ц.

Извиняюсь, конечно, но такого грубого отношения на форумах никогда не видел. Напрашивается вывод, что этот "разумный" человек - неадекват.

maxturbo 28.04.2011 23:13

Ответ: 2д координаты в мировые
 
Цитата:

Сообщение от Medan (Сообщение 186956)
А ты не тупой?
Раз я говорю что функция camerapick в дальнейшем возвращает КООРДИНАТЫ ОБЪЕКТА, А НЕ ТОЧКИ КУРСОРА!!!!!!!! ЕСЛИ ОБЪЕКТ СТОИТ В КООРДИНАТАХ 0;0;0 ТАК ЭТО Ф-ЦИЯ И ВОЗВРАЩАТЬ ВСЕГДА БУДЕТ 0;0;0, при нахождении курсора на объекте, И НИКОГДА НЕ ВОЗВРАТИТ 0;0;1!


Извиняюсь, конечно, но такого грубого отношения на форумах никогда не видел. Напрашивается вывод, что этот "разумный" человек - не адекват.

Он тебе все правильно объяснял :) Взгляни на код что я тебе дал и прочитай еще раз его пост, думаю ты поймешь что он тебе хотел объяснить ;)

baton4ik 28.04.2011 23:16

Ответ: 2д координаты в мировые
 
Цитата:

Сообщение от Medan (Сообщение 186956)
Извиняюсь, конечно, но такого грубого отношения на форумах никогда не видел. Напрашивается вывод, что этот "разумный" человек - неадекват.

Take it easy, он же по-доброму! :3

maxturbo 28.04.2011 23:21

Ответ: 2д координаты в мировые
 
Цитата:

Сообщение от Medan (Сообщение 186956)
Извиняюсь, конечно, но такого грубого отношения на форумах никогда не видел. Напрашивается вывод, что этот "разумный" человек - неадекват.

Все остынь :) Ни кто тебя тут не оскорбляет :) Все сказанное тут предел программистов ))))) Когда научишься чему либо, будешь точно так же отвечать на глупые вопросы новичков )))
Ты лучше скажи то, что я выложил это хоть то?? Или не совсем то?? ;)

Medan 28.04.2011 23:24

Ответ: 2д координаты в мировые
 
Цитата:

прочитай еще раз его пост
То что он сказал, я и так знал. Поэтому и писал что не просто в пустоте точку, а на террайне. И снова повторюсь, писал, что функции xPickedX и т.п., возвращают координаты объекта.
Если уж это не понятно, перефразирую так.
Надо получить мировые координаты, в точке где находится курсор, на поверхности объекте.


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

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