PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » Материалы сайта » Перевод книги "PureBasic - A Beginners Guide"


Перевод книги "PureBasic - A Beginners Guide"

Сообщений 61 страница 66 из 66

61

osg написал(а):

да, наверное так лучше, исправь плз весь текст в моём мессаге с этим экраном если хочешь и выложи - будет второй вариант.

Да я на авторство  перевода не претендую, главное, чтобы был адекватный перевод! Я теперь понимаю, на сколько сложно, красиво передать слова автора…
Вот поправил твой вариант, ты только его посмотри, чтобы не было грубых ошибок…

После того, как 3D объект был создан, он затем помещается в очередь для вывода на экран,  в трёхмерном пространстве, с координатами ‘0, 0, 0’.  А пока мы продолжим наш анализ примера Invader.

Освещение образца(области).

После того как объект был создан, я создал подсветку, чтобы лучше осветить сцену. Эту подсветку даёт источник яркого освещения, которое может быть любого цвета, чтобы сделать очертания этого объекта более четкими.  Когда вы создаёте 3D окружение, оно уже по умолчанию содержит определённое количество света окружающей среды, но этот свет фактически не излучается из какой-либо одной точки, а в место этого, как подсказывает само название, – это рассеянный свет. Это может сделать вид объекта плоским, потому что он не может учесть (выявить) какие стороны должны освещаться, а какие стороны должны иметь тень.  Добавлением подсветки на сцену, вы делаете возможным изменение наружного освещения объекта, чтобы сымитировать освещённость и тень, в зависимости от того, где размещён источник света по отношению к используемой каркасной сетке(mesh). Чтобы создать подсветку (источник света), я использовал команду ‘CreateLight()’. (Helpfile:Reference Manual->3D Games Libraries->Light->CreateLight)
...
CreateLight(#LIGHT, RGB(255,255,255), 0, 5, 0)
...
Команда принимает пять параметров, первый из которых это PB номер, который будет ассоциирован с этим светом. Второй,- это цвет подсветки (испускаемого света), который должен быть введён как 24-битное значение цвета (для этого может быть использована команда ‘RGB()’). Третий, четвёртый и пятый параметры – не обязательные, и определяют положение источника света в 3D пространстве, используя координатную систему ‘x, y, z’. Если эти параметры не используются, тогда источник света будет создан в позиции ‘0, 0, 0’, которая является центром 3D пространства. В примере «Invader» я использовал положение ‘0, 5, 0’, которое поднимает источник света над “полом” на 5 единиц измерения. См. Рис. 39 для графического представления 3D пространства используя координатную систему ‘x, y, z’.

Вращение камеры.

Теперь, когда 3D-элементы на месте, мы должны создать окно просмотра(viewport), с помощью которого(посредствам которого) можно смотреть  нашу 3D сцену. OGRE называет такие области просмотра, камерами, но на самом деле, мы должны различать этими два терминами, чтобы избежать путаницы. Окно просмотра, это 2D окно, которое существует на текущем открытом экране и отображает то, на что смотрит камера. Как только “просмотровое окно” камеры создано, оно автоматически создаёт 3D камеру, размещённую в координатах ‘0, 0, 0’ и вновь созданное окно просмотра показывает, на что смотрит 3D камера. 3D камера может быть размещена и повёрнута по желанию, но окно просмотра всегда фиксируется в том же положении на экране.

Чтобы создать “просмотровое окно” камеры и автоматически создать 3D камеру в текущем 3D мире, вы используете команду ‘CreateCamera()’ (Helpfile:Reference Manual->3D Games Libraries->Camera->CreateCamera). Эта команда принимает пять параметров и как обычно, первый параметр это PB номер, который будет ассоциирован с этим объектом-камерой. Второй и третий параметры это ‘x’ и ‘y’ позиция верхнего левого угла окна просмотра(viewport) на 2D экране. Четвёртый и пятый параметры – ширина и высота «смотрового окна», по средствам которого просматривается 3D сцена. При использовании этой команды очень важно понимать те значения, которые она использует, потому что они очень отличаются от большинства команд PureBasic. Значения параметров, которые использует команда ‘CreateCamera()’ – не в пикселях, а в процентах текущего открытого экрана. В примере «Invader» я создал вот такую камеру:

...
CreateCamera(#CAMERA_ONE, 0, 0, 100, 100)
...

Чтобы полностью это понять, давайте разберём вызов этой команды на уровне отдельного параметра. Первый параметр это PB, назначение которого легко понять, так что мы его быстро пропустим. Второй параметр был определён как «0». Это означает, что он будет рассчитан как ноль процентов ширины экрана (1024), и что является нолём. Третий параметр тоже определён как «0». Это так же в процентном соотношении но по отношении к высоте экрана (768), так что он тоже равен «0». Четвёртый параметр был определён как ‘100’. Это равняется ста процентам ширины экрана, которая в данном случае ‘1024’. Пятый параметр также определён как ‘100’, и он будет равен ста процентам высоты экрана, что составляет ‘768’. Это даёт нам все (в полноте) экранные координатах «смотрового окна”  камеры, такие, как: ‘x=0, y=0, width=1024, height=768’ (‘x=0, y=0, ширина=1024, высота=768’), это полностью покрывает экран, чтобы дать нам полноэкранное окно «смотрения» камеры в 3D мир
Процентное соотношение используется для этой команды вместо пикселей, так что точка обзора камеры полностью независима от размера экрана. Это простой способ поддерживать позицию камеры на различных разрешениях экрана. Например если я создам «смотровое окно» камеры в половину ширины и высоты экрана, то эта область просмотра всегда будет размером в половину ширины и высоты экрана независимо от того какое разрешение экрана использовалось.

Множественные «смотровые окна» камер.

Использование процентного соотношения это также хороший способ поддержки множественных «смотровых окон» камер. Представьте если вам нужно написать код игры в поделённом или расчетверённом экране, вам понадобится хороший способ рассчитать размер экрана просмотра  на каждое данное разрешение экрана (если оно может быть выбрано пользователем). Всё это делается для вас в PureBasic, использованием процентного соотношения, всегда гарантируя, что каждое окно просмотра камеры, всегда занимает туже область на экране, независимо от использованного разрешения экрана. Также, при создании множества камер, очень важен порядок создания. Все окна просмотра, созданные позже в вашем коде, всегда перекроют окна просмотра созданные раньше. Взгляните на этот код для примера:
...
CreateCamera(#CAMERA_ONE, 0, 0, 100, 100)
CreateCamera(#CAMERA_ONE, 75, 0, 25, 25)

Отредактировано Lucagin (17.01.2011 14:56:10)

0

62

Привет, всем!

Камеры, просмотровыйе фрэймы - это всё хорошо, но вот как заставить слушателя крутится?
Используя описаный здесь пример, я прикрутил еще и псевда3ди звук, камера крутится, а звук не меняет положение в звуковой панораме.
Или PureBasic еще до этого не дорос, или у меня руки кривые.
Подскажите, пожалуйста, кто знает, как его (слушателя) покрутить?

Есть
SoundListenerLocate (x,y,z)
Но это только точка в игровом мире, откуда игрок слышет весь игровой мир.
Однако этого мало, потому, что его лицо направлено всегда на условный север, а надо бы, что бы его можно было поворачевать для полноценной звуковой картины.
Ведь это бессмыслеца, когда направление взгляда, например, на восток, а слышим как будто лицом на север.

Вот пример моих бессмысленных трудов!

Отредактировано diamass (26.06.2015 23:35:33)

0

63

Здравствуйте.
Я долго искал материалы по программированию на PureBasic , в дебрях интернета нашёл и скачал вместе с компилятором перевод книги, как подарок был и троян. Книга мне понравилась и я решил распечатать её, так как на старости лет не признаю
других книг, кроме как бумажных, подготовил всё соответствующем образом в PDF и DOCX , хочу предложить, как я понял, автору перевода, ну и всем кому интересно.
https://yadi.sk/i/_Sr4TlTrjzCyf - PDF
https://yadi.sk/i/ALNnZoDskE9kt - DOCX
С уважением.
Rostik

0

64

ВиниПур
"Вообще то с книгой в комплекте идет сборник всех кодов и ресурсов, которые там используются. Лежал  в сети в свободном доступе, там где книгу продавали.
Ссылка есть тут http://forums.purebasic.com/english/vie … mp;t=37059"

     К сожалению прошло время и сейчас на форуме http://forums.purebasic.com/english/vie … mp;t=37059 ссылки на исходники и файлы для программ книги уже не работают.

     В частности недоступны файлы:
1) Source Code From The Book
PureBasic - A Beginners Guide Source Code.zip (4Mb)
по ссылке http://www.kalekold.net/pb-beginners/Resources/PureBasic - A Beginners Guide Source Code.zip
(видимо этот же файл, или какую-то его часть, я нашел по ссылке http://www.mediafire.com/download/ac345 … source.zip - с форума http://www.purebasic.fr/english/viewtop … p;start=60)
2) Win32 API Helpfile Referenced In The Book
Win32 API Helpfile.zip (5.5Mb)
по ссылке http://www.kalekold.net/pb-beginners/Resources/Win32 API Helpfile.zip
3) Source Text & Images To Create The Book
Source Text and Images.zip (33.8Mb)
по ссылке http://www.kalekold.net/pb-beginners/Source Text and Images.zip.

     Может быть у кого-то эти файлы сохранились и вы сможете выложить их куда-нибудь на файлообменник и дать работающие ссылки на них? Особенно хотелось бы найти файл 3) - "Source Text and Images.zip"

Отредактировано Nemo3001 (07.03.2016 00:21:24)

0

65

Нашел все-таки работающую ссылку на файл 3) - "Source Text and Images.zip" к этой книге: http://www.4shared.com/zip/7C9Cv4-d/Sou … Images.htm
     Может быть кому-нибудь пригодится...

+1

66

Nemo3001 написал(а):

Нашел все-таки работающую ссылку на файл 3)

пошёл по ссылке, мне загрузило аж четыре страницы пока добрался до скчать, и в конце концов предложили скачать экзешник, зачем мне экзешник?

0


Вы здесь » PureBasic - форум » Материалы сайта » Перевод книги "PureBasic - A Beginners Guide"