|
3D-программирование Вопросы, касающиеся программирования 3D мира |
20.09.2009, 19:37
|
#1
|
AnyKey`щик
Регистрация: 22.11.2007
Сообщений: 13
Написано 0 полезных сообщений (для 0 пользователей)
|
Вопросы очередного новичка
У меня тут возникло немного вопросов по блицу и физиксу в частности, но сам ответа на них я пока не нашел.
первый:
у меня физические модели (пропы, я привык их так звать) автоматически грузятся и настраиваются с помощью .cfg файла, в котором записаны все необходимые параметры. Однако можно случайно подать не существующий cfg файл, и тогда игра падает. Я нашел функцию FileType(file), которая могла бы решить эту проблему. Однако как завершить выполнение функции при ошибке я так и не догадался. Break и Exit не работают, а больше я ничего и не знаю.
Второй:
как определить координаты той точки, куда смотрит камера?
Третий:
как находить длину PxRay?
Четвертый:
как сделать так, чтобы игрок был тоже физ.объектом?
У меня выходят какие-то криворукие вещи, толку от которых нету. Пока реализовал обычными коллизиями.
По мере появления вопросов буду писать еще, не обижайтесь на неразумного)
|
(Offline)
|
|
20.09.2009, 19:41
|
#2
|
Оператор ЭВМ
Регистрация: 17.09.2009
Адрес: Казахстан -> Рудный
Сообщений: 42
Написано 10 полезных сообщений (для 23 пользователей)
|
Ответ: Вопросы очередного новичка
Отвечу на второй:
PickedX(),PickedY(),PickedZ()
Только обьектам на которые смотриш по ставь пикмоде 2
__________________
Проект:
Название: Solium - Last War.
Жанр: Онлайн шутер с элементами стратегии.
Завершён: 45%
Ведётся работа над сервером игры... (20 %)
Сайт проекта: http://shwl-center.at.ua/
===========
Дайте сказать немому...
===========
"Да, ты можешь использовать готовые решения, и всё будет работать, но МОЗГОВ тебе от этого, не прибавится!"
===========
Помните! Ничто не защищает Ваши зубы 24 часа в сутки так хорошо, как уважительное отношение к окружающим!
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
20.09.2009, 19:42
|
#3
|
Оператор ЭВМ
Регистрация: 17.09.2009
Адрес: Казахстан -> Рудный
Сообщений: 42
Написано 10 полезных сообщений (для 23 пользователей)
|
Ответ: Вопросы очередного новичка
Вот пример из хелпа
; Пример CameraPick
; ------------------
Graphics3D 640,480,0,2
SetBuffer BackBuffer()
camera=CreateCamera()
PositionEntity camera,0,2,-10
light=CreateLight()
RotateEntity light,90,0,0
plane=CreatePlane()
EntityPickMode plane,2 ; Присвоим плоскости тип определения 2 (по полигонам).
ground_tex=LoadTexture("media/Chorme-2.bmp")
EntityTexture plane,ground_tex
cube=CreateCube()
EntityPickMode cube,2 ; Присвоим кубу тип определения 2 (по полигонам).
cube_tex=LoadTexture("media/b3dlogo.jpg")
EntityTexture cube,cube_tex
PositionEntity cube,0,1,0
While Not KeyDown( 1 )
If KeyDown( 205 )=True Then TurnEntity camera,0,-1,0
If KeyDown( 203 )=True Then TurnEntity camera,0,1,0
If KeyDown( 208 )=True Then MoveEntity camera,0,0,-0.05
If KeyDown( 200 )=True Then MoveEntity camera,0,0,0.05
; Если левая кнопка мыши нажата, используем CameraPick с координатами мыши
; В этом примере можно выбрать только 3 вещи: плоскость, куб, или ничего
If MouseHit(1)=True Then CameraPick(camera,MouseX(),MouseY())
RenderWorld
Text 0,0,"Use cursor keys to move about"
Text 0,20,"Press left mouse button to use CameraPick with mouse coordinates"
Text 0,40,"PickedX: "+PickedX#()
Text 0,60,"PickedY: "+PickedY#()
Text 0,80,"PickedZ: "+PickedZ#()
Text 0,100,"PickedNX: "+PickedNX#()
Text 0,120,"PickedNY: "+PickedNY#()
Text 0,140,"PickedNZ: "+PickedNZ#()
Text 0,160,"PickedTime: "+PickedTime#()
Text 0,180,"PickedEntity: "+PickedEntity()
Text 0,200,"PickedSurface: "+PickedSurface()
Text 0,220,"PickedTriangle: "+PickedTriangle()
Flip
Wend
End
__________________
Проект:
Название: Solium - Last War.
Жанр: Онлайн шутер с элементами стратегии.
Завершён: 45%
Ведётся работа над сервером игры... (20 %)
Сайт проекта: http://shwl-center.at.ua/
===========
Дайте сказать немому...
===========
"Да, ты можешь использовать готовые решения, и всё будет работать, но МОЗГОВ тебе от этого, не прибавится!"
===========
Помните! Ничто не защищает Ваши зубы 24 часа в сутки так хорошо, как уважительное отношение к окружающим!
|
(Offline)
|
|
20.09.2009, 19:45
|
#4
|
AnyKey`щик
Регистрация: 22.11.2007
Сообщений: 13
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Вопросы очередного новичка
Тo Dakar:
А к trimesh это подойдет, не знаешь?
просто уровень реализован именно им, и надо создавать объекты там, куда смотрит камера, и чтобы они не застревали и никуда не девались
спасибо за мгновенную реакцию, про камера пик совсем забыл, хотел pxRay'ем делать
|
(Offline)
|
|
20.09.2009, 19:49
|
#5
|
Оператор ЭВМ
Регистрация: 17.09.2009
Адрес: Казахстан -> Рудный
Сообщений: 42
Написано 10 полезных сообщений (для 23 пользователей)
|
Ответ: Вопросы очередного новичка
Сообщение от TxN
Тo Dakar:
А к trimesh это подойдет, не знаешь?
просто уровень реализован именно им, и надо создавать объекты там, куда смотрит камера, и чтобы они не застревали и никуда не девались
|
Пробуй ))) и про пикмоде не забывай, в справке почитай там всё есть
Вот так она используется :
EntityPickMode entity,pick_geometry[,obscurer]
Параметры
entity - указатель объекта
pick_geometry - тип геометрии, используемой для проверки:
0: не проверяется (по умолчанию)
1: Сфера (используется EntityRadius)
2: Полигоны
3: Куб (используется EntityBox)
obscurer (не обязательно) - True, чтобы установить, что объект перекрывает другие объекты во время выполнения EntityVisible.
Описание
Устанавливает режим проверки для объекта.
Дополнительный параметр obscurer используется с EntityVisible, чтобы создать условия, когда линия взгляда может как бы беспрепятственно пройти между двумя объектами. Это позволяет проверять некоторые объектам с использованием других pick-команд, но игнорировать их (они как бы 'прозрачные') при использовании EntityVisible. Это очень важное свойство EntityVisible.
__________________
Проект:
Название: Solium - Last War.
Жанр: Онлайн шутер с элементами стратегии.
Завершён: 45%
Ведётся работа над сервером игры... (20 %)
Сайт проекта: http://shwl-center.at.ua/
===========
Дайте сказать немому...
===========
"Да, ты можешь использовать готовые решения, и всё будет работать, но МОЗГОВ тебе от этого, не прибавится!"
===========
Помните! Ничто не защищает Ваши зубы 24 часа в сутки так хорошо, как уважительное отношение к окружающим!
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
20.09.2009, 19:53
|
#6
|
Нуждающийся
Регистрация: 02.09.2007
Сообщений: 50
Написано 9 полезных сообщений (для 9 пользователей)
|
Ответ: Вопросы очередного новичка
Отвечу на четвёртый вопрос: физическим цилиндром и силами прилагаемыми к нему.
В этой теме есть реализация этого, только через сферу.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
20.09.2009, 20:13
|
#7
|
AnyKey`щик
Регистрация: 22.11.2007
Сообщений: 13
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Вопросы очередного новичка
Извините глупого, но как сделать так, чтобы цилиндр при применении к нему силы никуда не переворачивался и не катился?
Еще раз извините за тупость)
|
(Offline)
|
|
20.09.2009, 20:17
|
#8
|
Гигант индустрии
Регистрация: 14.12.2005
Сообщений: 2,785
Написано 1,183 полезных сообщений (для 4,437 пользователей)
|
Ответ: Вопросы очередного новичка
Сообщение от TxN
Я нашел функцию FileType(file), которая могла бы решить эту проблему. Однако как завершить выполнение функции при ошибке я так и не догадался. Break и Exit не работают, а больше я ничего и не знаю.
|
Return
__________________
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
20.09.2009, 20:24
|
#9
|
AnyKey`щик
Регистрация: 22.11.2007
Сообщений: 13
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Вопросы очередного новичка
Блин с ним уже пробовал, не выходило, щас попробовал и нашел баг из-за которого Return глючил)
Return False же правильно его использовать, да?
|
(Offline)
|
|
20.09.2009, 20:59
|
#10
|
Оператор ЭВМ
Регистрация: 17.09.2009
Адрес: Казахстан -> Рудный
Сообщений: 42
Написано 10 полезных сообщений (для 23 пользователей)
|
Ответ: Вопросы очередного новичка
Вот наслождайся:
Про Return
Return value
Параметры
RETURN возвращает значение из функции, тип данных при этом соответствует объявленному в имени функции.
Значение не может быть возвращено при использовании GOSUB.
Описание
При вызове внутри структуры FUNCTION, команда RETURN немедленно возвращает выполнение программы из функции назад к основному коду, откуда функция была вызвана. Необязательное значение может быть возвращено. Смотрите FUNCTION для получения большей информации по теме. Помните, после RETURN, оставшийся код FUNCTION не выполняется. Смотрите пример. RETURN также завершает выполнение подпрограммы, вызванной командой GOSUB, но не может возвращать данные.
; RETURN Пример
; Выбор результата для значения возврата функции 'testme'
result=testme(Rnd(0,10));
; Программа эффективно заканчивается здесь.
; Подлинная функция
Function testme(test);
; Если случайный номер является = 0
If test=0 Then
Print "Значение было 0"
Return False ; Функция завершается немедленно
Else
Print "Значение больше, чем 0"
Return True ; Функция прекращается немедленно
End If
Print "Эта строка никогда не будет напечатана!"
End Function
__________________
Проект:
Название: Solium - Last War.
Жанр: Онлайн шутер с элементами стратегии.
Завершён: 45%
Ведётся работа над сервером игры... (20 %)
Сайт проекта: http://shwl-center.at.ua/
===========
Дайте сказать немому...
===========
"Да, ты можешь использовать готовые решения, и всё будет работать, но МОЗГОВ тебе от этого, не прибавится!"
===========
Помните! Ничто не защищает Ваши зубы 24 часа в сутки так хорошо, как уважительное отношение к окружающим!
|
(Offline)
|
|
20.09.2009, 21:08
|
#11
|
AnyKey`щик
Регистрация: 22.11.2007
Сообщений: 13
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Вопросы очередного новичка
Return я починил, длину физ.луча находить научился сам, создавать объекты перед собой тоже научился, остался лишь вопрос с игроком - физическим объектом.
Если давать силу сфере, то она крутится, цилинд катится, куб тоже, надо както запретить вращение, но я хз как)
А хелп у меня на английском
|
(Offline)
|
|
20.09.2009, 23:44
|
#12
|
Нуждающийся
Регистрация: 02.09.2007
Сообщений: 50
Написано 9 полезных сообщений (для 9 пользователей)
|
Ответ: Вопросы очередного новичка
Сообщение от TxN
Извините глупого, но как сделать так, чтобы цилиндр при применении к нему силы никуда не переворачивался и не катился?
Еще раз извините за тупость)
|
Если бы ты один такой был... Сказать то легко, а вот сделать... У меня тоже с этим проблема, бьюсь над ней уже много времени. С цилиндром не получается, за основу главного героя тоже взял сферу. С цилиндром получилось только на С++ сделать с PhysX'ом. Но так как в С++ я ламер пока что, хочу сделать на BB, только сам. И в этом основная запарка.
Пробовал сделать со смещением центра тяжести у цилиндра, но не очень получилось и я забросил. Попробуй, может у тебя что то путёвое получится
|
(Offline)
|
|
20.09.2009, 23:45
|
#13
|
Нуждающийся
Регистрация: 02.09.2007
Сообщений: 50
Написано 9 полезных сообщений (для 9 пользователей)
|
Ответ: Вопросы очередного новичка
Проблему с кручением сферы я решил быстро, сейчас найду исходник, посмотрю как.
|
(Offline)
|
|
20.09.2009, 23:52
|
#14
|
Нуждающийся
Регистрация: 02.09.2007
Сообщений: 50
Написано 9 полезных сообщений (для 9 пользователей)
|
Ответ: Вопросы очередного новичка
Я делал глупым способом, но по крайней мере он работает.
При помощи команд EntityPitch, EntityYaw, EntityRoll и pxBodySetRotation я поворачивал физическое тело по углам меши. Способ тупой, но действенный. Надо поворачивать только меш, а тело само повернётся по направлению меши.
И ещё, команда pxBodySetAngularSpeed поможет решить эту проблему логичнее, чем я предложил
|
(Offline)
|
|
20.09.2009, 23:55
|
#15
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,741
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Вопросы очередного новичка
Третий:
как находить длину PxRay?
|
Теорема Пифагора спешит на помощь!
Function TeoremaPifagora#(x1#,y1#,z1#,x2#,y2#=0,z2#=0)
Return Sqr((x1 - x2)^2+(y1 - y2)^2+(z1 - z2)^2)
End Function
__________________
Мои проекты:
Анальное Рабство
Зелёный Слоник
Дмитрий Маслов*
Различие**
Клюква**
* — в стадии разработки
** — в стадии проектирования
Для проектов в стадии проектирования приведены кодовые имена
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 15:28.
|