Elite Games - Свобода среди звезд!
.
ВНИМАНИЕ!
Наша конференция посвящена космической тематике и компьютерным играм.
Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!

  » К вопросу о гранях, рёбрах, и вершинах вселенной :-) | страница 4
Конференция предназначена для общения пилотов. Для удобства она разделена на каналы, каждый из которых посвящен определенной игре. Пожалуйста, открывайте темы только в соответствующих каналах и после того, как убедитесь, что данный вопрос не обсуждался ранее.

Поиск | Правила конференции | Фотоальбом | Регистрация | Список пилотов | Профиль | Войти и проверить личные сообщения | Вход

   Страница 4 из 5
На страницу: Пред.  1, 2, 3, 4, 5  След. | Все страницы
Поиск в этой теме:
Канал Игры Мечты: «К вопросу о гранях, рёбрах, и вершинах вселенной :-)»
Надо ли пытаться что-нибудь слепить, когда знаешь , что всё равно ничего не выйдет?
Да, надо для общего развития
81%
 81%  [ 27 ]
Нет, не надо, а то ничсего не выйдет - и с горя повесишься
18%
 18%  [ 6 ]
Всего проголосовало : 33
DedMazaj
 68 EGP


Репутация: 4
Сообщения: 152
Откуда: Красноярск
Зарегистрирован: 25.05.2005
YogSagot :
Я говорил несколько про другое. Если ты предлагаешь сделать 100к ИНТЕРЕСНЫХ а не одинаковых звездных систем, то тут уж явно просто псевдослучайностью не обойдется. Тут фантазия, блин, нужна

так вот втом то и дело, что надо сделать такую схему создания систем и т.д., чтобы каждый раз было что нибудь новое и интерессное.
Пусть большие компании создают вручную системы, где много людей, а простому программеру это не по плечу, единственный выход - создать генератор создания всего.
_________________
спасаю зайцев с подбитых космических кораблей
    Добавлено: 17:44 08-06-2005   
whirlwind
 77 EGP


Репутация: 26
Сообщения: 338
Откуда: Spb
Зарегистрирован: 18.02.2005
DedMazaj: верно!

Чем тратить время на рисование горок и получить в результате 1км х 1км поверхности планеты, лучше потратить это время на разработку алгоритма генерации ландшафтов и получить сразу необъятную площадь и разнообразие.
    Добавлено: 18:14 08-06-2005   
Ur Quan
 510 EGP


Рейтинг канала: 1(5)
Репутация: 86
Сообщения: 728
Откуда: Арк-а-Зной
Зарегистрирован: 25.11.2003
Вот в этой теме обсуждался вопрос по созданию генератора вселенной (на второй странице):
«Переход от количества к качеству или "сколько вешать (»
А здесь по графике.
_________________
Рад видеть тебя на борту. Здесь Дом Свободы — можешь плевать на ковер и называть кота ублюдком.
    Добавлено: 18:29 08-06-2005   
DedMazaj
 68 EGP


Репутация: 4
Сообщения: 152
Откуда: Красноярск
Зарегистрирован: 25.05.2005
Чтобы перечитать все 400000 сообщений, надо много времени, по этому сильно старые темы можно и возобновить для новичков
_________________
спасаю зайцев с подбитых космических кораблей
    Добавлено: 18:45 09-06-2005   
Shirson
 1605 EGP


Модератор
Рейтинг канала: 7(626)
Репутация: 219
Сообщения: 16511
Откуда: 79°W 44°N
Зарегистрирован: 29.01.2002
Там три страницы, а не 400000 сообщений. А если новичёк не может осилить три страницы, о чём тогда речь?
_________________
У меня бисера не доxеpа.
    Добавлено: 12:04 10-06-2005   
DedMazaj
 68 EGP


Репутация: 4
Сообщения: 152
Откуда: Красноярск
Зарегистрирован: 25.05.2005
я уже осилил
_________________
спасаю зайцев с подбитых космических кораблей
    Добавлено: 18:38 10-06-2005   
Duh
 101 EGP


Репутация: 20
Сообщения: 269
Откуда: Ярославль
Зарегистрирован: 18.07.2004
Люди, помогите, подскажите! Как в OpenGL корректно камерой играться? Сейчас у меня программка рисует координатную сетку (по типу как проектор эклиптики в XT, но в 3-х плоскостях) и пару кубиков. Я, значит, пытаюсь в ней повернуть/транслировать камеру. Вместо этого у меня поворот/трансляция происходит не для камеры, а для глобальной с.к. Принцип работы перерисовки окна такой:
1) выставляю glMatrixMode в GL_PROJECTION
2) делаю glRotate/glTranslate
3) рисую сетку (c push/popMatrix ес-сно)
4) glMatrixMode(GL_MODELVIEW);
5) п.2 для объектов сцены и рисую объекты (тоже с Push/Pop)
Подскажите плиз что не так и как обычно это делается, а то я уже вконец запарился. Заранее благодарен.
    Добавлено: 12:03 14-07-2005   
Ur Quan
 510 EGP


Рейтинг канала: 1(5)
Репутация: 86
Сообщения: 728
Откуда: Арк-а-Зной
Зарегистрирован: 25.11.2003
Для управления камерой используй gluLookAt:
//задаётся один раз при инициализации
glMatrixMode(GL_PROJECTION);
glLoadIdentity;
gluPerspective(60.0, // угол видимости в направлении оси Y
1.33, // угол видимости в направлении оси X - через аспект = Width/Height
0.1, // расстояние от наблюдателя до ближней плоскости отсечения
100.0); // расстояние от наблюдателя до дальней плоскости отсечения
glMatrixMode(GL_MODELVIEW);
glLoadIdentity;
.....

//вызывается при перерисовке
glPushMatrix;
gluLookAt(PosCam.X,PosCam.Y,PosCam.Z,ViewCam.X,ViewCam.Y,ViewCam.Z,UpCam.X,UpCam.Y,UpCam.Z);
//PosCam - позиция камеры;
//ViewCam - точка в которую смотрит камера;
//UpCam - вектор направленный вверх (определяет поворот камеры вокруг вектора взгляда).
.....
//рисуем
.....
glPopMatrix;
SwapBuffers(DC);
_________________
Рад видеть тебя на борту. Здесь Дом Свободы — можешь плевать на ковер и называть кота ублюдком.
    Добавлено: 21:18 14-07-2005   
Duh
 101 EGP


Репутация: 20
Сообщения: 269
Откуда: Ярославль
Зарегистрирован: 18.07.2004
Т.е. gluLookAt вызывается в режиме матрицы GL_MODELVIEW? Чего-то я запутался Совсем запутался... . Проекционная матрица вроде отвечает за положение проекции на экран в пространстве, а модельная - за положение с.к., относительно к-рой рисуются 3D-объекты. Или нет?
    Добавлено: 14:16 18-07-2005   
Ur Quan
 510 EGP


Рейтинг канала: 1(5)
Репутация: 86
Сообщения: 728
Откуда: Арк-а-Зной
Зарегистрирован: 25.11.2003
Матрица проектировани задаёт то, как объекты будут проектироваться на экран. А матрица моделирования задаёт положение объекта.
Изначально камера располагается в точке (0.0, 0.0, 0.0), ось X направлена горизонтально влево, Y - вертикально вверх, Z - перпендикулярно экрану и направлена к наблюдателю.
С помощю glRotate/glTranslate мы "переносим" центр координат от которого начинаем рисовать (на самом деле происходит умножение на видовую матрицу). Команда gluLookAt переносит точку взгляда не меняя "положения" центра координат (у меня во вьювере на самом деле вращается камера вокруг/внутри объекта, а не сам объект).
_________________
Рад видеть тебя на борту. Здесь Дом Свободы — можешь плевать на ковер и называть кота ублюдком.
    Добавлено: 19:29 19-07-2005   
Duh
 101 EGP


Репутация: 20
Сообщения: 269
Откуда: Ярославль
Зарегистрирован: 18.07.2004
Ur Quan :
Матрица проектировани задаёт то, как объекты будут проектироваться на экран.
Если можно, поподробнее (я не придираюсь, просто непонятно Улыбка ).
    Добавлено: 14:43 25-07-2005   
Ur Quan
 510 EGP


Рейтинг канала: 1(5)
Репутация: 86
Сообщения: 728
Откуда: Арк-а-Зной
Зарегистрирован: 25.11.2003
NP
Эта матрица задаёт преобразование какая проекция изображения будет на экране: перспективная (glFrustrum, gluPerspective) или ортогональная (glOrtho, gluOtho2D).
P.S.:На чём програмишь?
_________________
Рад видеть тебя на борту. Здесь Дом Свободы — можешь плевать на ковер и называть кота ублюдком.
    Добавлено: 20:22 25-07-2005   
Duh
 101 EGP


Репутация: 20
Сообщения: 269
Откуда: Ярославль
Зарегистрирован: 18.07.2004
Ur Quan :
P.S.:На чём програмишь?

На дельфях Улыбка . Я пытаюсь повернуть камеру в локальных координатах, т.е. так, как поворачиавются все объекты в OpenGL - дабы от первого лица смотреть. В gluLookAt координаты глобальные. Вот я и пытаюсь их ручками повернуть. По идее надо текущую матрицу умножить на матрицу 'A' перехода в с.к. камеры, сделать rotate/translate и умножить получившуюся матрицу на обратную к 'A'. Это по идее. Обр.матрицу я считаю как b(i,j)=a(j,i)/|A|. Выходит руко Задница ство какое-то. Хотелось бы поинтересоваться, как это все по человечески делается?
    Добавлено: 13:34 09-08-2005   
Ur Quan
 510 EGP


Рейтинг канала: 1(5)
Репутация: 86
Сообщения: 728
Откуда: Арк-а-Зной
Зарегистрирован: 25.11.2003
Duh :
На дельфях

:О)
Книжка по OpenGL'у (начальные знания и всё такое): "OpenGL. Графика в проектах Delphi" М.Краснов
Заголовочный файл (dglOpenGL.pas - всё в одном, им пользуюсь ;О)):
http://www.delphigl.com/do_download.php?f=12000
Заготовка под dglOpenGL.pas (сделал свою, больше нравится):
http://www.delphigl.com/do_download.php?f=12100

Duh :
Я пытаюсь повернуть камеру в локальных координатах, т.е. так, как поворачиавются все объекты в OpenGL - дабы от первого лица смотреть.

Т.е. например камера находится в точке (x, y, z) и надо повернуть её на угол alpha относительно оси x?
Если так, то нужно перемещать точку "взгляда" в gluLookAt (ViewCam и UpCam), т.е. координаты камеры не изменяются, изменяется лишь направление взгляда и поворот камеры относительно вектора взгляда. Есть небольшие грабли, нужно следить чтобы расстояние ViewCam - PosCam было одинаковое, иначе если камера вращается вокруг точки взгляда ViewCam, она может улететь в никуда.
_________________
Рад видеть тебя на борту. Здесь Дом Свободы — можешь плевать на ковер и называть кота ублюдком.
    Добавлено: 19:07 09-08-2005   
Duh
 101 EGP


Репутация: 20
Сообщения: 269
Откуда: Ярославль
Зарегистрирован: 18.07.2004
Собственно по этой книжке и М_учусь. Спасибо, Ur Quan, на вопрос свой уже сам ответ нашел - после раскопок хелпа по gl и glu оказалось, что glRotate(alfa,x,y,z) как раз поворачивает с.к. вокруг вектора (x,y,z).
Ur Quan, эта библиотека по ссылке, чем она лучше стандартной?
А вообще есть ли процедурка, считающая обратную матрицу к текущей?
P.S. люди! Никогда, НИИИКОООГДААА не используйте процедуры под переменные разных типов (напр glRotatef и x:Double)! Иначе будете как я долго думать, почему ro=sqrt(sqr(x)+sqr(y)+sqr(z)) для вектора (1,0,0) не равен 1.
    Добавлено: 14:34 16-08-2005   
Ur Quan
 510 EGP


Рейтинг канала: 1(5)
Репутация: 86
Сообщения: 728
Откуда: Арк-а-Зной
Зарегистрирован: 25.11.2003
Duh :
эта библиотека по ссылке, чем она лучше стандартной?

там всё собрано и gl и glu команды + куча всяких расширений, и реализация контекста воспроизведения делается очень просто у меня 3 процедуры занимаются этим активация, деактивация и инициализация, передаю только Handle окна (кнопки, панели и т.п. это тоже окна :О), только стили разные) на котором нужно организовать вывод:
var
GLUK_DC : HDC;
GLUK_RC : HGLRC; // контекст воспроизведения OpenGL
GLUK_WND : HWND;

procedure glukActivate(hWindow: HWND);
begin
InitOpenGL;
GLUK_WND := hWindow;
GLUK_DC := GetDC(gluk_WND);
GLUK_RC := CreateRenderingContext(GLUK_DC, [opDoubleBuffered], 32, 24, 0, 0, 0, 0);
ActivateRenderingContext(GLUK_DC, GLUK_RC);
end;

procedure glukDeactivate;
begin
DeactivateRenderingContext;
wglDeleteContext(GLUK_RC); // Удаляем контекст воспроизведения.
ReleaseDC(GLUK_WND, GLUK_DC);
end;


procedure glukInit(ViewAngle: TGLfloat; X, Y, Width, Height: TGLuint; zNear, zFar: TGLfloat; BcgColor : COLORREF);
begin
glViewport(X, Y, Width, Height); // Set the viewport for the OpenGL window
glMatrixMode(GL_PROJECTION); // Change Matrix Mode to Projection
glLoadIdentity(); // Reset View
gluPerspective(ViewAngle, Width/Height, zNear, zFar); // Do the perspective calculations. Last value = max clipping depth
glMatrixMode(GL_MODELVIEW); // Return to the modelview matrix
glLoadIdentity(); // Reset View
glClearColor((BcgColor and $0000FF)/$FF,
(BcgColor and $00FF00)/$FF00,
(BcgColor and $FF0000)/$FF0000,1.0);
// glClearColor(0.0, 0.0, 0.0, 0.0); // Black Background
glClear (GL_COLOR_BUFFER_BIT); // установление цвета фона
glShadeModel(GL_SMOOTH); // Enables Smooth Color Shading
glClearDepth(1.0); // Depth Buffer Setup
glEnable(GL_DEPTH_TEST); // Enable Depth Buffer
glEnable(GL_BLEND);
glEnable(GL_ALPHA_TEST);
glEnable(GL_COLOR_MATERIAL);
glEnable(GL_TEXTURE_2D); // Enable Texture Mapping
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glDepthFunc(GL_LESS); // The Type Of Depth Test To Do
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); //Realy Nice perspective calculations
end;

потом делаю так:

//Действия при создании формы (событие OnFormCreate)
procedure TMainForm.KOLForm1FormCreate(Sender: PObj);
begin
...
//Активируем контекст воспроизведения.
glukActivate(MainForm.OpenGLDrawPanel.Handle);
//Инициализируем видовые параметры.
glukInit(90, 0, 0, MainForm.OpenGLDrawPanel.Width, MainForm.OpenGLDrawPanel.Height, 0.1, 100, BackgroundColor);

...
end;

и так:
//Действия при разрушении формы (событие OnFormDestroy)
procedure TMainForm.KOLForm1Destroy(Sender: PObj);
begin
glukDeactivate;
...
end;

P.S.: процедура glukInit может быть переделана под конкретное приложение (но обычно не меняю).
P.P.S.: В стандартном дельфовом заголовочном файле ошибки есть.
_________________
Рад видеть тебя на борту. Здесь Дом Свободы — можешь плевать на ковер и называть кота ублюдком.
    Добавлено: 15:27 16-08-2005   
Duh
 101 EGP


Репутация: 20
Сообщения: 269
Откуда: Ярославль
Зарегистрирован: 18.07.2004
Дык, это, тут же процедуры из gl Подозрение. .
P.S. кстати не подскажешь (ничего что на ты?) как нарисовать геосферу (это которая из одинаковых треугольников состоит)?
    Добавлено: 14:30 17-08-2005   
Dark Archon
 231 EGP


Репутация: 56
Сообщения: 389
Откуда: Moscow Federation
Зарегистрирован: 27.05.2004
Извиняюсь что вмешиваюсь... В каком смысле? То же что и из QUADS только поделенных еще одной гранью по середине, так что выходят 2 треугольника? Или сфера без сужения вертикальных граней к полюсам, т.е. без полюсов?
_________________
   o
_/0\_
 < >  КУ!
    Добавлено: 15:15 17-08-2005   
Shirson
 1605 EGP


Модератор
Рейтинг канала: 7(626)
Репутация: 219
Сообщения: 16511
Откуда: 79°W 44°N
Зарегистрирован: 29.01.2002
Геосфера состоит из одинаковых треугольников (и полюсов у ней нет), а из квадсов - они мельчают к полюсам.
_________________
У меня бисера не доxеpа.
    Добавлено: 15:26 17-08-2005   
Dark Archon
 231 EGP


Репутация: 56
Сообщения: 389
Откуда: Moscow Federation
Зарегистрирован: 27.05.2004
Ок, значит второй вариант. Я это делал при помощи фрактального деления и нормализации одной из фигур состоящей правильных треугольников: тетраэдр (tetrahedron) - состоит из 4-х треугольников, октаэдр (octahedron) - состоит из 8-и треугольников и икосаэдр (icosahedron) - состоит из 20-и треугольников. Можно фракталить из любого х-едра, но чем больше начальное количество треугольников - тем лучше получается результат при бОльшем количестве фрактальных разделений. Да, кстати, больше 20-и одинаковых треугольников в сферу не впишешь (т.е. вообще, правильных треугольников можно вписать только 4, 8 или 20), по этому при большем количестве треугольники уже идут не одинаковые, по сему я и говорю о качестве результата и рекомендую icosahedron.
_________________
   o
_/0\_
 < >  КУ!
    Добавлено: 15:49 17-08-2005   
Канал Игры Мечты: «К вопросу о гранях, рёбрах, и вершинах вселенной :-)»
На страницу: Пред.  1, 2, 3, 4, 5  След. | Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: Octopus - это Shark, который не кушал в детстве BoFu...

  » К вопросу о гранях, рёбрах, и вершинах вселенной :-) | страница 4
Каналы: Новости | Elite | Elite: Dangerous | Freelancer | Star Citizen | X-Tension/X-BTF | X2: The Threat | X3: Reunion | X3: Terran Conflict | X Rebirth | X4: Foundations | EVE Online | Orbiter | Kerbal Space Program | Evochron | VoidExpanse | Космические Миры | Онлайновые игры | Другие игры | Цифровая дистрибуция | play.elite-games.ru | ЗВ 2: Гражданская война | Творчество | Железо | Игра Мечты | Сайт
   Дизайн Elite Games V5 beta.18