Добавлено (07.09.2011, 19:02) --------------------------------------------- Kornival, ну я думаю ты знаешь, что есть вариант создать тримеш из данных модели и создать тримеш геометрию оде, можно так. Но я не вижу преобразований в том коде. Ты его проверял, он хоть работает?
Пример создания физики в панде, код на питоне. Здесь кубик, который падает на поверхность, поверхность не видимая. Для того чтоб увидеть как падает кубик нужно зажать правою кнопку мыши и провести мышью вперед.
world = OdeWorld() # Создадим объект ODE мир - контейнер для физических тел и сочленений world.setGravity(0, 0, -9.81) # Установим силу гравитации в мире по координате z, равной земной.
world.initSurfaceTable(1) # Создадим таблицу поверхностей и добавим значения характеристик поверхностей world.setSurfaceEntry(0, 0, 150, 0.0, 0, 1, 0.00001, 0.0, 0.002)
# Создание контактных группы для хранения соединений space = OdeSimpleSpace() space.setAutoCollideWorld(world) contactgroup = OdeJointGroup() space.setAutoCollideJointGroup(contactgroup)
# Настройка модели для визуализации boxMod = loader.loadModel("box") # Загружаем модель boxMod.setPos(0, 0, 3) # Устанавливаем координаты расположения модели boxMod.reparentTo(render) # Прикрепляем к узлу рендера для визуализации
# Добавление в мир ODE физической модели и настройка boxBody = OdeBody(world) # Создадим тело ODE M = OdeMass() # Создаем массу ODE M.setBox(60, 1, 1, 1) # Устанавливаем массе параметры бокса, вес и соотношение распределение веса boxBody.setMass(M) # Устанавливаем настроенною массу телу
# Создание пораметров геометрии boxGeom = OdeBoxGeom(space, 1, 1, 1) # Создаем ODE геометрию, бокс и устанавливаем размеры boxGeom.setBody(boxBody) # Устанавливаем геометрии настроенное физическое тело boxGeom.setPosition(boxMod.getPos()) # Устанавливаем позицию геометрии равной модели boxGeom.setQuaternion(boxMod.getQuat()) # Устанавливаем ориентацию геометрии равной модели
# Добавление поверхности на которую будет падать кубик, она не видима. groundGeom = OdePlaneGeom(space, Vec4(0, 0, 1, 0)) # Создаем объект ODE, плоскость
# функция симуляции синхронизации def simulation(task): space.autoCollide() # Устанавливаем соединения в авто world.quickStep(globalClock.getDt()) # Шаг симуляции за время последнего рендеринга boxMod.setPosQuat(boxGeom.getPosition(), Quat(boxGeom.getQuaternion())) # Синхронизация модели с геометрией тела contactgroup.empty() # Очищаем контакты return task.cont # Возвращаем задачу менеджеру для повторения
taskMgr.doMethodLater(3, simulation, "Physics") # Менеджер для запуска функции симуляции. Задержка 3 секунды чтоб можно было увидеть начало падения кубика. run()
Сообщение отредактировал serg-kkz - Среда, 07 Сентября 2011, 23:50
Хотя не многие знают компоненты DirectX SDK. Графическая составляющая строится только на Direct3D и DirectDraw. Последний сейчас используют всё реже почему-то (я не вдавался в подробности, почему это так, но чую, что это связано с возможностью реализации того же самого посредством D3D). Звук на DirectSound и DirectMusic, сетевые компоненты в DirectPlay берутся и т.п. SDK ёмкое, но мощное. При выборе OpenGL предоставляется только возможность работы с графической составляющей. Это как один из вариантов, на основе которых можно делать выбор. Ещё одним критерием можно выделить кросс-платформенность. DirectX компоненты хоть и можно, но не полностью использовать на других ОС. Например, *nix-подобные системы не способны переварить все компоненты. OpenGL в этом плане выигрывает.
Шокировал.
Els, бери кокой ни будь рендер движок. Огра, к примеру, если тебе нужны дополнительные сложности. Если хочешь делать без дополнительной суеты с прикручиванием библиотек для звука, физики и т.д, то готовый игровой движок.
какой размер массива будет, если эту строку разбить через splite('(1пробел)'); ???
noTformaT, с тобой не поспоришь
Думаю к чему себе делать проблемы городя несколько пробелов подряд, обычно когда пишешь в файл заранее думаешь как читать то его.
Можно так, на этот случай. Но есть подвох если окажется пробел после строки, перед кареткой перевода. можно бороться проверками whitespace, но раньше я этого не касался не знаю поможет нет.
Code
f = open('1.txt') text = f.read() f.close() list = text.split(' ') for i in list: if (i != ''): print i
Раз ты о ней заговорил, предполагаю, что ты знаешь, что это такое. Тогда вопрос - почему её предлагаешь? Я не вижу смысла в ней для данного случая.
Quote (Coyote)
Как сделать, чтобы в тексте слова считывались до пробела и каждое слово писалось с новой строки(текст берется из текстового файла) и какое-нибудь слово заменялось на английский язык.
Сообщение отредактировал serg-kkz - Среда, 07 Сентября 2011, 09:54
Это при записывании, если ты как о разделители, то этого по ним не делается. т.к. это знаки форматирования, и не является текстовыми символами, и не учитываются (или игнорируется не знаю, как сказать)
Сообщение отредактировал serg-kkz - Вторник, 06 Сентября 2011, 18:21
froex, думаю если реализуешь хотя бы то что есть, думаю, будет круто. Начинай. Мне, например не нужен документ чтобы реализовать пример складывания листа (меша).
Alex_Roth, главное кому было делать, надеюсь сказанное дойдет само. Или разжевать?
05142, вот я тебя не понял, ты знаешь unity3D?
Пояснение: тут пишет тот кто твердо собрался участвовать, предлагая движок который он знает. Если большинства за один двиг то его юзеры берут по сути ответственность за реализацию идеи. Пишут те кто готов, советовать просто какой то двиг не нужно.
Сообщение отредактировал serg-kkz - Вторник, 06 Сентября 2011, 15:50
Kornival, идея самоорганизаваться (сообществом) по большинству пользователей движка. А по движку решить что можно сделать, но это уже проблемы тех кого оказалось большинство т.к. если писали движок сюда значит готовы участвовать, а иначе писать не нужно. Думаю глупо выбирать за кого-то на чем делать и что.
Схема.
Quote (noTformaT)
1) Решиться на чем разрабатывать игру, так как она 3д, я а только 3 знаю которые могут сделать нормальную 3д игру (не в обиду другим, мож я просто мало знаю) то решать толком нечего будет. 2) Решится с сюжетом игры - к счастью тут есть чет типа гильдии писателей, очень часто добавляются различные литературы, много писателей (я знаю 5-6) и т.д. тут тоже проблемы нет 3) Создать бюро заказов. Этакая тема, в которую скидываются заказы, типа "нарисовать черта", сделать концепт передвижения героя, сделать скрипт фонарика и т.д. И кто сможет, и кто хочет, то те пусть делают, одно задание может взять каждый, потом сравнивается просто качество выполнения. Тот кто выполнил - записывается в титры
Сообщение отредактировал serg-kkz - Вторник, 06 Сентября 2011, 19:28
Coyote, кинь пример текстового файла, могу на питоне показать. Если тебе нужно организовать чтение/запись есть библиотеки для сериализации данных, лучше использовать их. Например YAML, точно не скажу есть ли для С#, думаю можно найти другую.
Quote (froex)
работа с текстовыми файлами быстрее
В каком смысле? Двоичный поток выполняется без преобразования, и думаю быстрее. С текстовым удобней работать, т.к. воспринимается лучше.
Сообщение отредактировал serg-kkz - Вторник, 06 Сентября 2011, 14:34