![]() |
Несколько вопросов
Здравствуйте еще раз, форумчане. Буду вам признателен, если вы ответите мне на возникшие вопросы.
1) В функции AnimateMD2 третий параметр - скорость анимации. Как я понимаю, число кадров в секунду будет равно скорости, умноженной на 25? 2) Это из 2D-мира. Функция MouseXSpeed() в следующем коде: Код:
Repeat 3) Третий вопрос. Чему равна единица пространства? Она не совпадает с величиной, указанной в редакторе или же совпадает? 4) Вопрос касается буферизации. Вот код: Код:
Graphics3D 400, 200 Код:
Graphics3D 400, 200 5) Пожалуйста, поправьте меня, если я что-то не так скажу. Ширина и высота камеры устанавливаются равными ширине и высоте графического режима. Координаты камеры - это точка, в которой находится ее центр. Ортографическая проекция рендерится быстрее, чем перспективная. Прошу прощения за большое количество вопросов. |
Ответ: Несколько вопросов
Вложений: 1
Цитата:
Цитата:
Цитата:
Цитата:
мммм.НЕ МОЖЕТ ТАК БЫТЬ:народ,объясните МНЕ как такое может быть....с первого раза рендера не было,стоит раз буфер инициализировать(фронтальный) так всегда потом рендер--хоть закрой прогу,хоть нет:Вложение 14060 Цитата:
---кто лучше знает,объясните..... |
Ответ: Несколько вопросов
Цитата:
V=(x2-x1)/t (x2-x1)->0 => V->0 ps: http://forum.boolean.name/forumdisplay.php?f=37 |
Ответ: Несколько вопросов
Цитата:
|
Ответ: Несколько вопросов
Спасибо, Костян.
Так значит x1 устанавливается равным x2 после выполнения функции. Ну а если ты вызвал функцию в первый раз? Или подождав очень долгое время в третий раз? Тогда откуда берется x1? Я так понимаю, что скорость мыши - это количество пикселей, на которое она успела сместиться за секунду. Так что наверное хранится 1000 x-ов мыши, которые были за 0, 1, 2, 3, ... 999, 1000 мс ранее. По прохождению еще одной мс, добавляется новая координата, а самая последняя удаляется. Когда же вызывается функция MouseXSpeed, то все все координаты стираются, и в конец (0 мс) добавляется текущая координата. Действительно все делается так? Касатально 4-го вопроса, связанного с буферизацией. Вот такой код: Код:
Graphics3D 400, 200 Код:
Graphics3D 400, 200 Код:
Graphics3D 400, 200 |
Ответ: Несколько вопросов
Используй SetBuffer()
Отрисовка 2D (текста и т.п.), вызывай после RenderWorld и перед Flip'ом. |
Ответ: Несколько вопросов
Выяснил, что эта B3D-единица зависит от ширины приложения и никак не зависит от его высоты. Видно, находится она по какой-то формуле. Родился новые вопрос:
Как узнать размеры объекта в единицах B3D и пикселях? |
Ответ: Несколько вопросов
И еще один:
Как сделать так, чтобы текстура не повторялась? |
Ответ: Несколько вопросов
Это 3D. Он ни как не соотносится к пикселям.
Используя матрицы проекции (камеры), идёт преобразование 3D в 2D - на экран. От разрешения это не зависит. Нету соотношения. Можно вычислить размер объекта на экране но это математика и работа с матрицами. Зачем вообще задаёшься подобным? Что хочешь реализовать? Клик по объекту? Для этого есть CameraPick. Читай документацию, там много есть полезного.. |
Ответ: Несколько вопросов
Чем больше я делаю ширину, посылаемую оператору Graphics, тем больше становится куб. А вот высота куба всегда одинаковая.
А в справке не написано ничего про размеры объектов. |
Ответ: Несколько вопросов
Не уже ли никто не задавался подобными вопросами?
|
Ответ: Несколько вопросов
Цитата:
Если ты не знал, есть ещё MouseXSpeed,MouseZSpeed А вообще, в блитце (смотрим хелп) эти комнады возвращают не скорость, а расстояние*, пройденное курсором с момента последнего вызова. Код:
Global mouse1%=MouseX() **- секунда выбрана, как единица времени по системе СИ; шаг дискретизации подбирается программистом исходя из нужд. ***- в общем случае, аппроксимация скорости не всегда может носить такой тривальный характер (на основе определения производной). |
Ответ: Несколько вопросов
Имп, ему 15....ты рознесёшь ему мозг.
|
Ответ: Несколько вопросов
Хм, и правда, нам ведь нужна скорость мыши именно в данный момент времени. Но за исключением этой вещи я все сказал правильно - когда вызывается функция MouseXSpeed, то меняется x1. Но непонятно, зачем это сделано.
|
Ответ: Несколько вопросов
Цитата:
Код:
mouse2=MouseX() Код:
Graphics3D 400, 200,32,2 *-если не будет закрыто растром, представляющим проекцию трёхмерной сцены Цитата:
|
Ответ: Несколько вопросов
Цитата:
упд. Вспомнил что где то про это уже читал. Надо поискать срочно |
Ответ: Несколько вопросов
Да потому что камере пофигу какое разрешение, там всё зависит от FOV (пирамида обзора, точнее, на самом деле обрезанная, типо трапеции).
Единица в мире, не имеет никакого отношения к пикселям на экране. Это как на листике нарисовать график от -1 до 1, и уместить его в 5см шириной листок. Или то же самое нарисовать на листке в 10см шириной. От размера листка, сами данные не будут меняться - график будет от -1 до 1, не в зависимости на чём рисуете. Матричные преобразования будут проецировать всё что нужно, и если хочешь больше вместить в экран, либо ставь объект дальше, либо меняй градус обзора (чтоб больше обхватывал). В математике с матрицами, нету никаких пикселей и т.п. Если эта тема интерестна настоль глубоко. То ты начал с Blitz3D немного зря. Т.к. этот инструмент как раз даёт возможность писать логику и графику, не утруждая себя такими вопросами. Таким образом ты можешь понять общую картинку игростроя, весьма правда поверхностно и грубо. А если интерестны детали, то бери в руки DirectX или OpenGL и C++, и вперёд, там как раз это всё и с самого начала на тебя свалиться, и будешь понимать такие вещи, иначе не сможешь писать свой двиг на этих GAPI. |
Ответ: Несколько вопросов
Касательно MouseXSpeed():
Вот в чем была проблема: я думал, что скорость возвращается в пкс/с, а оказалось, пкс/{n времени}. При старте программы mouse_1=0, и чтобы обновить координату, мы использовали однократный вызов функции MouseXSpeed() в начале программы. Тогда возвращалось какое-то число, которое нам нужно не было, и обновлялась переменная mouse_1. Сейчас я понимаю, что лучше и правда знать, на сколько мышь сдвинулась с последнего момента вызова функции MouseXSpeed(). Большое спасибо, impersonalis, что объяснили. Касательно буферизации: почитаю. Касательно размеров: Спасибо за хороший пример, но вот в Blitz3D, видимо, по-другому. Он считает, что если лист широкий, то нужно сделать и размеры фигур побольше! И я думаю, что этим достигается кросс-размерность экрана в 3D. Т. е. если у тебя разрешение 800x600, то ты увидишь куб со стороной 20 пикселей (что будет составлять 1/40 экрана); если у тебя разрешение 1280*1024, то ты увидишь куб со стороной 32 пикселя (опять же что будет составлять 1/40 экрана). Это, конечно, только гепотеза, но я в ней абсолютно уверен. Однако по какой же формуле можно рассчитать сторону куба (если камера расположена впритык к нему)? |
Ответ: Несколько вопросов
*Он нифига непонял
|
Ответ: Несколько вопросов
MoKa, не хотелось бы уходить с Blitz3D, хотя бы пока, т. к. я только-только на нем закрепился. Но если на то пошло, то что вы конкретно посоветуете? "Голый" C++? Без какого-либо движка?
|
Ответ: Несколько вопросов
Цитата:
|
Ответ: Несколько вопросов
MoKa, я уже приступил =)
|
Ответ: Несколько вопросов
Цитата:
|
Ответ: Несколько вопросов
Цитата:
|
Ответ: Несколько вопросов
Цитата:
Если нужна аргументация, могу предоставить, но прошу, не нужно туториалов и уроков - берите документацию, ставьте цель и старайтесь думать самостоятельно - это дольше, но несравнимо лучше.. |
Ответ: Несколько вопросов
Цитата:
|
Ответ: Несколько вопросов
Спасибо за ссылку, но у меня уже есть учебник.
|
Часовой пояс GMT +4, время: 21:43. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot