![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
XaMMaX |
![]()
Сообщение
#1
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 85 Пол: Мужской Реальное имя: max Репутация: ![]() ![]() ![]() |
Вот надо отрисовать куб и что бы он отображался правильно тоесть задние части не видны =) Но не знаю как пользоваться z-буффером помогите пожалуйста!
|
![]() ![]() |
Malice |
![]()
Сообщение
#2
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: ![]() ![]() ![]() |
Для того чтобы отобразить куб, Z-буфер использовать необязательно, достаточно отрисовывать поверхности, начиная с самой дальней. В случае куба вообще можно рисовать только 3 передних, т.к. это максимум, что можно увидеть за раз. И вообще, раз кубик нужен - глянь сюда: http://forum.pascalnet.ru/index.php?showtopic=5854
![]() Сообщение отредактировано: Malice - 19.09.2006 20:29 |
XaMMaX |
![]()
Сообщение
#3
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 85 Пол: Мужской Реальное имя: max Репутация: ![]() ![]() ![]() |
Очень сложный для меня пример ещё и с ассемблером =( И всё же хотелось бы именно с z-буффером =)
достаточно отрисовывать поверхности, начиная с самой дальней. ----- А как мне узнать какая самая дальняя? Сообщение отредактировано: XaMMaX - 20.09.2006 16:34 |
Malice |
![]()
Сообщение
#4
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: ![]() ![]() ![]() |
Очень сложный для меня пример ещё и с ассемблером =( И всё же хотелось бы именно с z-буффером =) Проще некуда ![]() ![]() Цитата достаточно отрисовывать поверхности, начиная с самой дальней. ----- А как мне узнать какая самая дальняя? Отсортировать ![]() А с Z-буфером все равно не получится, либо придется писать свою процедуру FillPoly (и уже не с 2-мя координатами, а 3-мя) т.к. работает он в момент отрисовки. |
XaMMaX |
![]()
Сообщение
#5
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 85 Пол: Мужской Реальное имя: max Репутация: ![]() ![]() ![]() |
Блин, а чё fillpoly только с массивами работает =( Мне нужно просто fillpoly(4,sx1,sy1,sx2,sy2,sx3,sy3,sx4,sy4);
Это возможно реализовать ? Кстатей вот программа нельзяли кусок кода для неё? Она загружает модель куба из файла и отрисовывает по четыре точки =) Прикрепленные файлы ![]() |
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
Цитата Мне нужно просто fillpoly(4,sx1,sy1,sx2,sy2,sx3,sy3,sx4,sy4); Ну, и в чем проблема? ![]() var А чем массивы не нравятся? Что, по одной переменной обращаться удобнее? ![]() |
Malice |
![]()
Сообщение
#7
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: ![]() ![]() ![]() |
Блин, а чё fillpoly только с массивами работает =( Мне нужно просто fillpoly(4,sx1,sy1,sx2,sy2,sx3,sy3,sx4,sy4); Это возможно реализовать ? Это очень просто реализовать. Но если ты не можешь переписать все эти значения в массив, то зря ты взялся за 3д (и тем более з-буфер), начни с чего нибудь попроще.. |
XaMMaX |
![]()
Сообщение
#8
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 85 Пол: Мужской Реальное имя: max Репутация: ![]() ![]() ![]() |
Это очень просто реализовать. Но если ты не можешь переписать все эти значения в массив, то зря ты взялся за 3д (и тем более з-буфер)
----- Не впринципе я могу записать это в массив просто не хотелось код изменять =) начни с чего нибудь попроще.. ----- Всмысле 2д что ли? Или 3д по другому принципу? На Z-буффер я уже забил =) Или есть какие-то программи для подготовки создания 3д? 2volvo ладно надо попробывать прадо про директиву Absolute не слышал наверное должно быть стыдно =)Не очень понимаю код , но попробую разобраться =) |
XaMMaX |
![]()
Сообщение
#9
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 85 Пол: Мужской Реальное имя: max Репутация: ![]() ![]() ![]() |
Ну вообщем закрашивать получилось теперь надо решить проблему невидимых линий и как-то отсортировать =) Как это сделать именно с этой программой??? Идеи есть?
|
XaMMaX |
![]()
Сообщение
#10
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 85 Пол: Мужской Реальное имя: max Репутация: ![]() ![]() ![]() |
program My_3D; Как здесь отсортировать? ![]() ![]() Сообщение отредактировано: volvo - 2.11.2006 13:37 |
Coder_perm |
![]()
Сообщение
#11
|
![]() Новичок ![]() Группа: Пользователи Сообщений: 19 Пол: Мужской Реальное имя: Антонио Репутация: ![]() ![]() ![]() |
XaMMaX, Когда-то давным давно, когда ещё не было графических акселераторов, я этим всем увлекался... Пороюсь в архивал, выложу, что найду!
|
XaMMaX |
![]() ![]()
Сообщение
#12
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 85 Пол: Мужской Реальное имя: max Репутация: ![]() ![]() ![]() |
Спасибо, а то я сварганил, но чего-то не помjгло не капли =(
min:=1; Принцип такой: Я отрисовываю по 4 точки так что чтобы узнать какая сторона самая дальняя то я вычесляю сумму и сравниваю со следущими в массиве т.к. у меня всё отрисоввывается в порядке массива! Плиз хелп по чему не работает разьясните не могу понять вроде всё правильно !!! Ну, а если вдруг нужен весь код то я разместил исходник! Сообщение отредактировано: volvo - 2.11.2006 13:37 Прикрепленные файлы ![]() |
XaMMaX |
![]()
Сообщение
#13
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 85 Пол: Мужской Реальное имя: max Репутация: ![]() ![]() ![]() |
Я вас прошу помогите в понедельник надо отдавать прогу!! Плиз что не так в сортировке??? Не могу понять плизз хелп!!
|
Mlc |
![]()
Сообщение
#14
|
Гость ![]() |
А в чем сокраментальный смысл вот этих строк:
Код modelz1[i+1]:=buf1; ... buf1:=modelz1[min]; ... ? Т.е. сначала координате Z присваивается неопределенное значение buf1, потом определяется buf1. Это во-первых, во-вторых раз уж меняешь местами Z координаты, то меняй и X,Y. |
Гость |
![]()
Сообщение
#15
|
Гость ![]() |
Блин какой я идиот =( Спасибо большое действительно идиотская ошибка =)
|
XaMMaX |
![]()
Сообщение
#16
|
Пионер ![]() ![]() Группа: Пользователи Сообщений: 85 Пол: Мужской Реальное имя: max Репутация: ![]() ![]() ![]() |
Блин не помогает
min:=1; Чё то мне кажется что условия никогда не выполняется, но почему? Плизз понедельник уже близиться, а ещё не готово!! |
Гость |
![]()
Сообщение
#17
|
Гость ![]() |
Ну кто-нибудь завтра уже понедельник =( Плизз помогите!
|
Malice |
![]()
Сообщение
#18
|
![]() Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 705 Пол: Мужской Репутация: ![]() ![]() ![]() |
1. сортировать по удаленности грани нужно только _после_ их поворота, а не перед. Т.е.делать надо в 3 цикла : повернули, отсортировали, вывели. Выводить можно будет с 4-той грани по 6-ю - меньше моргать будет.
2. в процедуре calc напутал с углами - проверь (будет незаметно при одинаковых xan, yan, zan) 3. вместо перерисовки черным поставь просто Cleardevice; ![]() 4. И вообще, поворачивая фигуру ты новые координаты записываещь в тот же массив, т.е. первоначальной фигуры уже нигде нет, накапливаются ошибки и фигура со временем исказится, захочешь добавить перспективу - не выйдет. Лучше повернутую в другое место. |
Гость |
![]()
Сообщение
#19
|
Гость ![]() |
Спасибо щас попробую =) Если чего отпишусь =)
|
Гость |
![]()
Сообщение
#20
|
Гость ![]() |
Блин чё-то вроде сортировку сворганил онаработает не идеально вот проверьте плиз в компиляторе
program My_3D; Сами видете как рисуется =( Есть предложение?? Плизз срочно!! |
![]() ![]() |
![]() |
Текстовая версия | 21.07.2025 11:02 |