| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > Помогите с примитивом |
| Автор: Salatovec 7.11.2008, 01:59 | ||
Помогите люди добрые, значитс есть такой код:
Здесь разноцветный кубик крутится вокруг осей Х и Y. и Все бы хорошо, но некоторые грани не видны, как я понимаю из-за того, что координаты их совпадают с другими гранями и эти грань налезает на грань, вообще кубик похож не на кубик, а на кубик с несколькими прозрачными гранями, которых якобы и в помине нет. Помогите люди пожалуйса, второй час голову ломаю. |
| Автор: Baton2007 7.11.2008, 09:23 |
| А зачем использовать две функции glRotatef(); Если я не ошибаюсь одна функция справится с поворотом по всем 3 осям! И еще избавься от goto и поставь функции таймера! |
| Автор: Salatovec 7.11.2008, 09:40 |
| 2 функции использую, чтобы скорости поворота были разные. Так а по моей проблеме ответ будет?) |
| Автор: Salatovec 7.11.2008, 13:31 |
| Неужели никто не поможет, очень хочу понять решение?( |
| Автор: Salatovec 7.11.2008, 15:18 |
| |
| Автор: Salatovec 7.11.2008, 23:47 |
| Да какие же вы после этого профессионалы ( |
| Автор: Salatovec 9.11.2008, 01:25 |
| |
| Автор: Rickert 9.11.2008, 14:20 |
| Смотрим что такое gluLookAt() - 0 Что значит "Case 1: ", в начале функции "Display"? - 1 Учимся инициализировать не через glut - чтобы понять как работать с OpenGL, а не пытаться построить камаз, научившись резьбе по дереву. |
| Автор: Salatovec 9.11.2008, 19:30 |
| Ура откликнулись добрые люди, спасибо) Дак учиться то я и хочу, просто уроки, которые я нашел в инете чето как то туманно учат, я во многое не втыкаю( А case - я сделал как метку, чтобы все время угол поворота прибавлялся и функция заного начиналась. Чтобы кубик крутился короче =\ |
| Автор: Rickert 10.11.2008, 04:42 |
| Будут вам уроки 0) Забываем про метки - это плохой стиль программирования. Выбросьте книгу, которая вам о них поведала. Возьмите книгу Дейтлов или Страуструпа. 1) Идём в ya.ru -> "Уроки Nehe" - учимся инициализировать OpenGL и делать какой-то минимум действий. 2) Если понадобиться - создайте тему что-то типа "Вопросы человека, учащего OpenGL" - и там задавайте появляющиеся вопросы. Думаю, если их накопится много, то модератор даже закрепит эту тему. Я обещая во всём помогать вам и освещать непонятные вопросы, попутно осыпая ссылками |
| Автор: Salatovec 10.11.2008, 17:10 |
| Rickert, Я как раз и учился по урокам нехе, вот там 1 урок, инициализация в виндовс он уже непонятен) Куча, куча - ну просто куча кода, а мне то нужно лишь чтобы окошко создавалось и в нем кубик пока нарисовать, чтобы вертелся и правильно отображался. Про создание кубика и вообще работу с рисованием полигонов, линий и т.д. я понял, а от непосредственно инициализацию опенгл нет( Я нашел вот такие уроки http://www.firststeps.ru/mfc/opengl/r.php?1 , как считаете, подойдут? Или все таки лучше в нехе втыкать? |
| Автор: Salatovec 10.11.2008, 19:15 |
| Если не трудно, сделай мне такую, а я попробую в ней разобраться и спрошу, что непонятно. Если не трудно, пожалуйста. |
| Автор: Rickert 11.11.2008, 04:36 |
| Нет, друг мой, извините, делать за вас никто ничего не будет. Я вам повторяю - "Уроки NeHе" - первый из них посвящён созданию окна и инициализации OpenGL. Надо инициализировать именно так как там указано, а не через коротенькие, готовые функции glut'а, неудивительно что вы не понимаете как всё это работает: просто пытаетесь сделать работу быстрее. |
| Автор: Salatovec 11.11.2008, 10:49 |
| Просто инициализация и вправду уж больно жесткая =\ Ладно, возникнут вопросы - напишу) |
| Автор: Rickert 11.11.2008, 13:55 |
| Salatovec, это вам кажется. Поверьте: дальше - больше |
| Автор: Salatovec 11.11.2008, 17:04 |
| Rickert, Вот вопросы возникли) Рисовать полигонами коробочки, сферки, цилиндры - это все конечно хорошо, а вот если более сложная модель? Я хорошо работаю в 3ds maxe, но не знаю как из макса экспортировать в с++. И вот 2 вопроса - собственно как экспортировать и чтоже все таки лучше - рисовать с++ или максом? |
| Автор: Rickert 12.11.2008, 09:55 |
| Salatovec, Конечно же все ресурсы создаются в отдельных проргаммах, а потом импортируются в свой проект. Как это делать? Есть разные способы. Допустим вам надо загрузить модель из Макса в ваш проект: сохраняем её (или экспортируем) в Obj формат (wavefront OBJ), затем в своём проекте пишем функцию по загрузке этого файла и рисуем, все дела. |
| Автор: Salatovec 12.11.2008, 12:22 |
| Rickert, Спасибо тебе огромнейшее, мне бы только функцию узнать "по загрузке этого файла" |
| Автор: Rickert 13.11.2008, 04:59 |
| Salatovec, сначала сделай OBJ файл, потом открой его в блокноте и сам всё поймёшь, как его надо читать. |
| Автор: Salatovec 13.11.2008, 14:41 |
| Честно открыл и честно не понял =( |
| Автор: Rickert 14.11.2008, 05:23 |
| Тогда иди на wotsit.org и в поиске вводи "OBJ", среди результатов ищи OBJ wavefront - это и будет описание файла. Повторяю: никто за тебя ничего не напишет. Понять - помогу, но ты сам должен учиться это делать. |
| Автор: Salatovec 14.11.2008, 15:24 |
| Да я и не прошу за меня всё делать -_- но понять код длинной с байкало амурскую магистраль чето как то не але =\ не могли в пару строк чтоль придумать ( |
| Автор: Rickert 15.11.2008, 08:24 |
| Salatovec, Иркутянин чтоли? |
| Автор: Salatovec 15.11.2008, 12:28 |
| Нет, Москвич) если ты об этом |
| Автор: TDM 15.11.2008, 21:57 |
| Salatovec, Если некоторые грани не видны то наверно неправильные координаты вершин. |
| Автор: Salatovec 16.11.2008, 01:59 | ||
Нет координаты были верны, дело было в инициализации окна опенджл) но спасибо за ответ) |
| Автор: Salatovec 16.11.2008, 12:00 | ||||
Так, Rickert, вот такой вопрос, вот отрывок кода:
Здесь я рисую усеченный конус, без низа и верха с центром 0, 0 по осям x и y и удаленного на z от наблюдателя, а здесь:
я рисую тор, который находится внутри конуса на самом верху. Тор и конус связанны друг с другом, это должна быть единая модель, но если я начинаю их вращать, то они вращаются каждый вокруг своей оси. Как мне сделать, чтобы закрепить тор на верхних координатах конуса и он вращался правильно? |
| Автор: TDM 26.11.2008, 00:07 |
| Salatovec, Сперва поворачиваешь а потом перемещаешь ёмаё) |
| Автор: Gongex 15.2.2009, 00:21 | ||
| Салатовек,я решал такие проблемы,и знаю как отладить чтоб тор вращался нормально. использовать надо glPushMatrix(); чтобы сохранить вращения и glPopMatrix(); чтобы сбросить все вращения.
Добавлено @ 00:23 я сам искал исходник загрузки из 3Дсмакс,и все тупили как жлобы,в итоге я сам нашел код,и он работает.Там формат надо сохранять не в .max а в .3DS.Давай почту кину этот исходник. Добавлено @ 00:32 Я скомпилил твой код и все зависло.Casel-лишнее.Там уже встроена функция бесконечного рисования Это вот она по моему glLoadIdentity(); Добавлено @ 00:33 посмотри чего я достиг,в рисовании опенгл::http://unlater.narod.ru/OpenGl.html с сентября занимаюсь |
| Автор: Gongex 15.2.2009, 14:07 |
| Rickert, Мне не нужны преподаватели.Я сам все знаю. Я обобщил научные термины к "простому"....Стирает и сохраняет вращения. |