A2 & Oberon GOOGLE trans to English      Помощь      Поиск      Пользователи  Файловый архив


 Страниц (2): [1] 2 »   

> Описание: Небольшой пример по компьютерной графике
MaDzi
Отправлено: 03 Января, 2009 - 16:37:52
Post Id



Member


Покинул форум
Сообщений всего: 102
Дата рег-ции: Дек. 2008  
Откуда: Саратов
Репутация: 0




В приложении 2 файла CGScene и CGDemo01.
CGScene - модуль содержащий типы "точка", "вектор", "матрица" и перегруженные операторы для работы с ними.
CGDemo01 - программа демонстрирующая создание трёхмерных фигур (куб).
доступны клавиши:
'Q', 'q' - выход,
'1', '2' - вращение вокруг оси x
'3', '4' - вращение вокруг оси y
'5', '6' - вращение вокруг оси z
'M', 'm' - переход от каркасной модели к твердотельной и наоборот.
Скачать файл: CGDemo.zip
Скачан раз: 543
 
 Top
sage Администратор
Отправлено: 06 Января, 2009 - 13:39:56
Post Id


Full Member


Покинул форум
Сообщений всего: 218
Дата рег-ции: Июнь 2008  
Откуда: Киев, Украина
Репутация: 0




MaDzi пишет:
CGDemo01 - программа демонстрирующая создание трёхмерных фигур (куб).
Побольше демок красивых и разных Подмигивание
В A2 есть похожая демка с каркасным отображением и твердотельным с наложением текстур W3dExplorer.Mod Улыбка
К нему по-идее несложно будет "прикрутить" и рендеринг на трассировке лучей.
Вообще хорошо-бы проработать динамический движок сцены, с бинарными деревьями для быстрых тестов пересечения объектов лучами.
За отправную точку можно взять к примеру движок FDD (Four Dimensional Dreams), созданный изначально под Oberon System 3. Мне пока не удалось его скомпилировать под A2...
К тому-же, я нашёл в сети весьма простой алгоритм построения сфер минимального объёма, для ограничения облака точек. Его можно тоже использовать, наряду с AABB и бинарными деревьями.
Кроме того, мне удалось сильно ускорить оригинальный алгоритм. Сфера вокруг миллиона точек строится менее чем за секунду Улыбка
 
 Top
MaDzi
Отправлено: 06 Января, 2009 - 14:47:16
Post Id



Member


Покинул форум
Сообщений всего: 102
Дата рег-ции: Дек. 2008  
Откуда: Саратов
Репутация: 0




sage пишет:

В A2 есть похожая демка с каркасным отображением и твердотельным с наложением текстур W3dExplorer.Mod Улыбка

Видел, но это немного не то, что мне было нужно. Мне же студентов учить Компьютерной Графике, т.е. всё должно быть разобрано и примитивно.
sage пишет:

Вообще хорошо-бы проработать динамический движок сцены, с бинарными деревьями для быстрых тестов пересечения объектов лучами.

Согласен. Потому то и пытаюсь сейчас посмотреть какие есть подходы к построению движков. Возможно сначала не движок сделать, а библиотеку аналогичную OpenGl, но пока без аппаратной поддержки 3Д.
sage пишет:
За отправную точку можно взять к примеру движок FDD (Four Dimensional Dreams), созданный изначально под Oberon System 3. Мне пока не удалось его скомпилировать под A2...

А где можно посмотреть это чудо ?
sage пишет:
К тому-же, я нашёл в сети весьма простой алгоритм построения сфер минимального объёма, для ограничения облака точек. Его можно тоже использовать, наряду с AABB и бинарными деревьями.
Кроме того, мне удалось сильно ускорить оригинальный алгоритм. Сфера вокруг миллиона точек строится менее чем за секунду Улыбка

Это замечательно, но всё-таки не хотелось бы всё сводить к построению сфер. Хочется иметь возможность строить и рендерить произвольные фигуры.
 
 Top
sage Администратор
Отправлено: 06 Января, 2009 - 15:31:51
Post Id


Full Member


Покинул форум
Сообщений всего: 218
Дата рег-ции: Июнь 2008  
Откуда: Киев, Украина
Репутация: 0




MaDzi пишет:
Согласен. Потому то и пытаюсь сейчас посмотреть какие есть подходы к построению движков. Возможно сначала не движок сделать, а библиотеку аналогичную OpenGl, но пока без аппаратной поддержки 3Д.

Насколько я понимаю, OpenGl -- лишь API, в компании SGI (разработчики OpenGl) в своё время пришли к выводу, что описывать 3-х мерные миры с помощью их API достаточно громоздко и не удобно (OpenGl по сути дела ассемблер 3-х мерной графики).
В итоге в SGI создали высокоуровневую надстройку Inventor http://www.faqs.org/faqs/sgi/faq/inventor/
Цитата:
Open Inventor is an object-oriented 3D toolkit offering a
comprehensive solution to interactive graphics programming problems.
It presents a programming model based on a 3D scene database that
dramatically simplifies graphics programming. It includes a rich set
of objects such as cubes, polygons, text, materials, cameras, lights,
trackballs, handle boxes, 3D viewers, and editors that speed up your
programming time and extend your 3D programming capabilities.

Так нужен-ли ассемблер если можно сразу реализовать движок в лучших традициях ООП? Подмигивание
Затем SGI решили усовершенствовать Inventor совместно с компанией M$ под новым названием Fahrenheit, но M$ это было не выгодно (нужно было продвигать свой DirectX) и проект был благополучно похоронен.
Я думаю, удачно сравнивать OpenGl и Inventor в данном случае, как реляционные базы данных (RDBMS) с объектно-ориентированными (OODBMS).
MaDzi пишет:
А где можно посмотреть это чудо ?

Цюрихцы страницу проекта удалили. Вот залил: http://sage.com.ua/files/OberonFDD.7z
MaDzi пишет:
Это замечательно, но всё-таки не хотелось бы всё сводить к построению сфер. Хочется иметь возможность строить и рендерить произвольные фигуры.

Так сферы исключительно для ускорения тестов пересечения. Если луч не пересекает сферу, то можно не анализировать пересечение с фигурами лежащими внутри сферы Подмигивание
 
 Top
MaDzi
Отправлено: 06 Января, 2009 - 15:43:50
Post Id



Member


Покинул форум
Сообщений всего: 102
Дата рег-ции: Дек. 2008  
Откуда: Саратов
Репутация: 0




sage пишет:

...skip...
Так нужен-ли ассемблер если можно сразу реализовать движок в лучших традициях ООП? Подмигивание

Согласен полностью. Ассемблер нужен только в учебных целях (следовательно оставлю студентам для реализации Улыбка
Буду смотреть читать. Думаю сначала следует выработать спецификации и обрисовать в общих чертах чего мы хотим добиться. Потом наметить несколько промежуточных целей и приступать к реализации.
sage пишет:

MaDzi пишет:
А где можно посмотреть это чудо ?

Цюрихцы страницу проекта удалили. Вот залил: http://sage.com.ua/files/OberonFDD.7z

Спасибо, скачал.
sage пишет:

MaDzi пишет:
Это замечательно, но всё-таки не хотелось бы всё сводить к построению сфер. Хочется иметь возможность строить и рендерить произвольные фигуры.

Так сферы исключительно для ускорения тестов пересечения. Если луч не пересекает сферу, то можно не анализировать пересечение с фигурами лежащими внутри сферы Подмигивание

У меня по этому поводу есть другие соображения, где сферу строить вообще не нужно. Но нужны субпространственные деревья, чтобы определять объекты лежащие в одном полупространстве с нормалью.
 
 Top
lit-uriy Супермодератор
Отправлено: 06 Января, 2009 - 15:49:49
Post Id


Advanced Member


Покинул форум
Сообщений всего: 298
Дата рег-ции: Нояб. 2008  
Откуда: Тюмень / Новосибирск
Репутация: 0




как я понял, OpenGL живее всех живых. Вот в лаборатории у тролей статейка есть и примеры тестов (правда я сграфикой не работал, но понял так, что троли обертку сделали с которой работать удобнее чем с настоящим OpenGL).

П.С. вдруг эти цифирки вам полезными окажутся.
 
 Top
sage Администратор
Отправлено: 06 Января, 2009 - 16:01:04
Post Id


Full Member


Покинул форум
Сообщений всего: 218
Дата рег-ции: Июнь 2008  
Откуда: Киев, Украина
Репутация: 0




MaDzi пишет:
У меня по этому поводу есть другие соображения, где сферу строить вообще не нужно. Но нужны субпространственные деревья, чтобы определять объекты лежащие в одном полупространстве с нормалью.
Согласен, субпространственные деревья тоже конечно. oc-tree или kd-tree... Но, если сцены будут динамичными будет возникать необходимость эти деревья часто перестраивать. Я думаю, может деревья если и строить, то минимальной глубины, что-бы перестройка происходила быстро. Тут и сферы могут пригодиться, а так-же метод пространственной сетки с алгоритмом Брезенхейма в 3d. Попробую на днях сделать демку из того что мне видится Улыбка
(Добавление)
lit-uriy пишет:
... троли обертку сделали с которой работать удобнее чем с настоящим OpenGL ...

Вот именно Подмигивание
Можно ведь сделать высокоуровневую библиотеку из которой будет торчать OpenGL в качестве низкоуровневого интерфейса, например Улыбка
Удобнее будет работать непосредственно с объектной моделью движка, а для любителей ассемблера -- OpenGL Подмигивание
На самом деле OpenGL внутри достаточно сложно устроен, различные буфера, списки, конечные автоматы и т.д. OpenGL как API это лишь вершина большого айсберга.
 
 Top
sage Администратор
Отправлено: 06 Января, 2009 - 20:41:14
Post Id


Full Member


Покинул форум
Сообщений всего: 218
Дата рег-ции: Июнь 2008  
Откуда: Киев, Украина
Репутация: 0




Гармония сфер Радость
Пока нарисованно OpenGL Закатив глазки
Прикреплено изображение (Нажмите для увеличения)
spheres.png
 
 Top
MaDzi
Отправлено: 06 Января, 2009 - 22:18:27
Post Id



Member


Покинул форум
Сообщений всего: 102
Дата рег-ции: Дек. 2008  
Откуда: Саратов
Репутация: 0




sage пишет:
Гармония сфер Радость
Пока нарисованно OpenGL Закатив глазки

Да я не против сфер. Но некоторые вещи сферами делать не очень удобно.

Думаю структура пакета должна быть следующей:
OGFMath - Точка, Вектор и операции с ними
OGFObjects - Основные объекты
OGFLights - Источники света (точечный, направленный)
OGFScene - Сцена, камера

Идея следующая:
Есть мир (сцена), который имеет некоторые свойства (типа фоновой освещённости).
В этот мир можно добавлять объекты (наследники базового объекта).
Информацию от мира можно получить через камеру.

Всё просто и логично. Остаётся определиться с минимальным набором полей и процедур всех объектов Улыбка

(Отредактировано автором: 06 Января, 2009 - 22:27:47)

 
 Top
lit-uriy Супермодератор
Отправлено: 07 Января, 2009 - 02:45:43
Post Id


Advanced Member


Покинул форум
Сообщений всего: 298
Дата рег-ции: Нояб. 2008  
Откуда: Тюмень / Новосибирск
Репутация: 0




MaDzi пишет:
Сцена, камера
Я еще не пробывал работать с графикой, только лишь почитал как у тролей сделано:
Сцена
Представление
Элементы

Т.е. это из техники Модель/представление, думаю это удобный подход. Может и вам также сделать. Несколько несуразный перевод (терминологически не согласованый с остальным, т.к. человек начал переводить, а потом пропал) есть на кросплатформе Может пригодится (идеи почерпнуть). Хотя Qt нельзя отнести к графическим инструментам, она ориентирована просто на GUI.

sage пишет:
Гармония сфер
Прикольно, а насколько сложно описывать такие поверхности (листья цветка)?
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0, скрытых: 0)
« Творческие идеи и проекты »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Locations of visitors to this page
[Valid RSS]

RSS

Valid CSS!


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0182]     [ Gzipped ]