Хочу отобразить 3D модель на iPhone: как начать? [закрытый]

Я хотел бы рекомендовать начать такую ​​задачу (например, имитировать поведение другой системы очень близко к этому) с подробным уточнением целевой системы. Как это должно работать с различными угловыми случаями. Один из лучших способов сделать это - напишите кучу тестов, чтобы обеспечить правильное поведение. Наличие таких тестов дает:

  • Лучше понять, какие элементы должны предшествовать тому, что
  • Базовое документирование
  • Делает систему надежной в отношении некоторых функций рефакторинга и добавления. Например, если добавлено еще одно правило - как убедиться, что предыдущие не будут разбиты?

Можно написать такие тестовые примеры:

sort2_test.py

import unittest
from sort2 import sorted2


class TestSortNumbers(unittest.TestCase):
    """
    Verifies numbers are get sorted correctly.
    """

    def test_sort_empty(self):
        self.assertEqual(sorted2([]), [])

    def test_sort_one_element_int(self):
        self.assertEqual(sorted2([1]), [1])

    def test_sort_one_element_real(self):
        self.assertEqual(sorted2([1.0]), [1.0])

    def test_ints(self):
        self.assertEqual(sorted2([1, 2]), [1, 2])

    def test_ints_reverse(self):
        self.assertEqual(sorted2([2, 1]), [1, 2])


class TestSortStrings(unittest.TestCase):
    """
    Verifies numbers are get sorted correctly.
    """

    def test_sort_one_element_str(self):
        self.assertEqual(sorted2(["1.0"]), ["1.0"])


class TestSortIntString(unittest.TestCase):
    """
    Verifies numbers and strings are get sorted correctly.
    """

    def test_string_after_int(self):
        self.assertEqual(sorted2([1, "1"]), [1, "1"])
        self.assertEqual(sorted2([0, "1"]), [0, "1"])
        self.assertEqual(sorted2([-1, "1"]), [-1, "1"])
        self.assertEqual(sorted2(["1", 1]), [1, "1"])
        self.assertEqual(sorted2(["0", 1]), [1, "0"])
        self.assertEqual(sorted2(["-1", 1]), [1, "-1"])


class TestSortIntDict(unittest.TestCase):
    """
    Verifies numbers and dict are get sorted correctly.
    """

    def test_string_after_int(self):
        self.assertEqual(sorted2([1, {1: 2}]), [1, {1: 2}])
        self.assertEqual(sorted2([0, {1: 2}]), [0, {1: 2}])
        self.assertEqual(sorted2([-1, {1: 2}]), [-1, {1: 2}])
        self.assertEqual(sorted2([{1: 2}, 1]), [1, {1: 2}])
        self.assertEqual(sorted2([{1: 2}, 1]), [1, {1: 2}])
        self.assertEqual(sorted2([{1: 2}, 1]), [1, {1: 2}])

Следующая функция может иметь такую ​​функцию сортировки:

sort2.py

from numbers import Real
from decimal import Decimal
from itertools import tee, filterfalse


def sorted2(iterable):
    """

    :param iterable: An iterable (array or alike)
        entity which elements should be sorted.
    :return: List with sorted elements.
    """
    def predicate(x):
        return isinstance(x, (Real, Decimal))

    t1, t2 = tee(iterable)
    numbers = filter(predicate, t1)
    non_numbers = filterfalse(predicate, t2)
    sorted_numbers = sorted(numbers)
    sorted_non_numbers = sorted(non_numbers, key=str)
    return sorted_numbers + sorted_non_numbers

Использование довольно простое и задокументировано в тестах:

>>> from sort2 import sorted2
>>> sorted2([1,2,3, "aaa", {3:5}, [1,2,34], {-8:15}])
[1, 2, 3, [1, 2, 34], 'aaa', {-8: 15}, {3: 5}]
52
задан ayaio 20 January 2016 в 03:17
поделиться

5 ответов

Необходимо, вероятно, запустить с некоторых более простых приложений/учебных руководств iPhone, только для получения опоры на obj-c и XCode и т.д.

Для этого, я рекомендую книгу iPhone прагматически настроенного программиста, которая имеет достаточно информации для начала работы (я запустил без знания XCode, obj-c, iPhone или Mac и добрался до рабочего приложения довольно быстро, с помощью главным образом это). Однако я должен добавить, что происхожу из довольно хорошей среды в C/C++ и Java.

Для Вашего конкретного проекта, возможно, смотрите на этот ответ, который обращается к приложению открытого исходного кода 3D, на которое можно посмотреть и получить подсказки от.

8
ответ дан Community 7 November 2019 в 09:31
поделиться

Еще раз, если я могу включить свою собственную работу, я имею записанный сообщение о вещах, которые я узнал из разработки приложения ES OpenGL на iPhone. То приложение, Молекулы (упомянутый frankodwyer), является открытым исходным кодом, и я имею рецензия по некоторым из других щекотливых вопросов, с которыми я столкнулся при разработке его. Приложение генерирует 3-D модели и позволяет Вам повернуть и масштабировать их с пальцами, который звучит близко к Вашим потребностям. Можно загрузить код, скомпилировать его и выполнить его на рабочем столе в течение нескольких минут. При присоединении к iPhone Developer Program можно установить его на устройстве.

Когда дело доходит до объектной загрузки, Bill Dudney работает над загрузчик Объекта Волнового фронта для iPhone, который мог бы быть в состоянии взять в Ваших файлах Блендера, должны они быть экспортными в том формате. Я еще не сделал большой работы структуры над iPhone, но это кажется, что его пример имеет ту работу теперь.

В целом, я нахожу, что изучение примером и путем вскакивания в разработку некоторых маленьких, целевых приложений (что Вы никогда не можете выпускать) что работы для меня. Попытайтесь настроить упомянутые выше примеры и посмотрите то, что происходит. Необходимо быть в состоянии прочитать код Objective C в тех примерах и начать получать ощущение того, что они делают.

Даже при том, что книга Hillegass (третий выпуск просто вышел и актуален) внимание на Mac, основные принципы Какао, которые он преподает, все еще важны для iPhone. Шаблон разработки MVC служит Вам точно также на iPhone как Mac. Я на самом деле отклонился от того шаблона в нескольких местах в Молекулах, и я сожалею, что решение, потому что те разделы приложения стали путаницей. Книга является легким чтением и определенно стоящий Вашего времени.

39
ответ дан Brad Larson 7 November 2019 в 09:31
поделиться

Бесстыдный разъем

я сделал маленькое рендерер AC3D для iPhone. Ссылка>>

Не стесняется испытывать его, демонстрационный lib для средства моделирования iPhone доступен. Обратите внимание на то, что работа OpenGLES на iPhone не является тем же как в Средстве моделирования.

Это использует этап оптимизации и сборку tristrips и создает финал vertexarrays, чтобы быть в состоянии работать на iPhone.

Часы быстрый запуск , как использовать его

6
ответ дан epatel 7 November 2019 в 09:31
поделиться

У меня есть игра с разработкой iPhone некоторое время забавы и купленного Начинающегося iPhone Development Dave Mark и Jeff LaMarche (ISBN13: 978-1-4302-1626-1), и люблю работать через главы. У меня есть Win32 история Дельфи с небольшим количеством.NET и таким образом, Objective C очень плохо мне знаком.

Одна из глав находится на OpenGL и Кварце, который может представлять интерес для Вас. Я имею далеко еще, не имеют этого, таким образом, я не могу действительно прокомментировать, насколько полезный это будет для себя, но стиль записи очень доступен, и по этому следуют хорошо (для меня так или иначе).

первоначальные главы объясняют точно, как разбудить выполнение с хорошим введением в XCode и InterfaceBuilder.

1
ответ дан Simon Temlett 7 November 2019 в 09:31
поделиться

2 хороших 3-х sdks для iPhone:

sio2interactive и улун.

sio2interactive имеет большое видео и src учебные руководства на их сайте. Это поможет с блендером и образцовым экспортом, и рендеринг - заставляет Вас исправляться к разработке игр. src - все в c для sio2, и код прокомментирован очень хорошо. Это - великолепное место, чтобы начать учиться 3-й и opengles. Блендером к экспорту sio2 является WYSIWYG.

Выполнение всего этого с нуля и необходимо будет знать, как экспортировать и импортировать модели сами. Так оба больших освобождает для кого-то начало работы.

0
ответ дан 7 November 2019 в 09:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: