1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

Дерево

Тема в разделе "W.I.P. (Work In Progress)", создана пользователем Pspainter, 1 июн 2013.

Модераторы: Seoman BOB, Skif, Роман Цапик
  1. Paul Anderson

    Paul Anderson Знаток

    С нами с:
    20.02.2012
    Сообщения:
    303
    Симпатии:
    14
    Баллы:
    21
    Итак, значит, делаю дерево. Ну как делаю, запустил TreeStorm, импортировал в 3д макс 2013 болванку, и уже тут столкнулся с проблемой. В гугле ничего толкового не нашел. Вот у меня есть отдельные обьекты: ствол и листва. Листва - все листики (элементы обьекта) собраны в кучу. Мне нужно заменить все эти элементы своими листочками (даже веточками). Какие действия я перепробовал:
    1. Выделил обьект, нажал Файл -- Реплэйс -- выбрал файл с моей веточкой, предварительно задав ей такое же имя. Результат - Вся листва заменилась на одну веточку. А нужно, чтоб каждый листик заменился на эту ветку.
    2. Выделил все елементы, применил модификатор Substitute, выбрал мою ветку - результат тот же.
    3. Нашел в интернете скрипт для того чтоб сделать Detach всем елементам обьекта, и уже потом заменить их на ветку. Результат - комп тупо зависает. Скрипт:
    • rollout rolTest "Detach Elems"
      (
      button btRun "Detach!" width:90 align:#center offset:[0, -2]

      function detachToNodes oPoly =
      (
      if (classOf oPoly != Editable_Poly) then
      throw "Wrong input in function: detachToNodes()"

      local iNumFacesLastElem = 0
      local baElemFaces = #{}
      local sName = ""

      while (true) do
      (
      baElemFaces = polyOp.getElementsUsingFace oPoly 1
      sName = uniqueName oPoly.name
      polyOp.detachFaces oPoly baElemFaces delete:true asNode:true name:sName

      if ((polyOp.getNumFaces oPoly) == 0) then
      (
      delete oPoly
      exit
      )

      if (keyboard.escPressed == true) do
      throw "** escape key pressed **"
      )
      )

      on btRun pressed do
      (
      local currSel = selection as Array

      for obj in currSel do
      if ((classOf obj) == Editable_Poly) then
      detachToNodes obj
      )
      ) -- End Rollout

      createDialog rolTest 96 27 style:#(#style_toolwindow, #style_border, #style_sysmenu)
    Прочие танцы с бубном тоже не помогли. Делал по вот этому уроку: http://www.render.ru/books/show_book.php?book_id=661. Но у меня 2013 макс, и плагин более поздней версии, так что отклонился от урока уже на этапе отделения листвы и ствола...
    У кого-нибудь есть идеи по поводу того, как заменить каждый елемент обьекта другим обьектом?
     
  2. igorznag

    igorznag Знаток

    С нами с:
    23.04.2010
    Сообщения:
    1.256
    Симпатии:
    173
    Баллы:
    65
    Сколько примерно листочков (элементы обьекта) имеет дерево?
    У меня комп умно зависает.
    Каким способом вы заменяете много отдельных объектов на ветку?
    Допустим дерево имеет только 2 листочка (элементы обьекта). Как вы вручную заменяете каждый листочек (элемент обьекта) на ветку?
     
  3. Paul Anderson

    Paul Anderson Знаток

    С нами с:
    20.02.2012
    Сообщения:
    303
    Симпатии:
    14
    Баллы:
    21
    Очень много) это при том что в 1 листочке всего 2 полигона. Вручную все не заменить. Разве что за неделю...
    Хех, ну как сказать, просто видно что он над чем-то думает, но результата я так и не дождался, даже уменьшая количество отделяемых елементов.
    А вот до этого я не дошел. Их ведь надо сначала отделить...
    Я бы поставил их на место листьев, а потом последние удалил бы. В уроке, по которому я делал дерево нарисована кнопка в свитке Саб-Обджект: Replace_with..., у меня же ее просто нету. Ставить тот софт, что и в уроке? Это ведь не выход... Должна же быть в максе функция отделения елементов, или их замены...
    Может тот скрипт не подходит для 2013 макса?
     
  4. igorznag

    igorznag Знаток

    С нами с:
    23.04.2010
    Сообщения:
    1.256
    Симпатии:
    173
    Баллы:
    65
    Сколько треугольников имеет каждый полигон? Полигоны являются планарными? Предоставьте картинку модели и сетку листочка.
    Есть такой способ: Одинаковые объекты и функция Instance Сообщение 5, 7.
    Как вы узнаете точное место листьев? Как вы узнаете точное вращение листьев? Вы подгоняете вручную нужное место и вращение для ветки с помощью способа "проб и ошибок"? Элементы, в отличие от объектов, не имеют опорную точку (pivot). Поэтому скрипту тяжело объяснить как найти нужное место и вращение листика, чтобы присвоить это место и вращение для ветки.
    В новой сцене создаем один чайник-Teapot и конвертируем его в Editable Mesh. Чайник состоит из 4 элементов. Выделяем все полигоны чайника, устанавливаем Explode Angle=180, выбираем to=Objects и нажимаем кнопку Explode.
    Скрипт должен работать. Попробуйте выполнить простой пример: В новой сцене создаем один чайник-Teapot и конвертируем его в Editable Poly. Чайник состоит из 4 элементов. Выделяем чайник. Запускаем скрипт и нажимаем кнопку. Получаем 4 объекта.
     
Модераторы: Seoman BOB, Skif, Роман Цапик

Поделиться этой страницей