Главная | Форум | Мой профиль | Выход | RSS
Меню сайта
Мини-чат
200
Наш опрос
Расширение спектра деятельности. Тоесть принимать и по возможности помогать не только Ultimate 3D
Всего ответов: 298
Кабинет

Логин:
Пароль:
Поиск
Календарь
«  Март 2024  »
ПнВтСрЧтПтСбВс
    123
45678910
11121314151617
18192021222324
25262728293031
Архив записей
Наши друзья
  • Официальный cайт U3D
  • Лучший сайт по GM
  • Сайт по геймдеву
  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0
    Мы рады приветствовать Вас на русскоязычном официальном сайте игрового движка Game Maker+Ultimate3D. Этот сайт создан для всех тех, кто хотел бы своими силами создать хотя бы одну компьютерную 3D игру, но не знает, как это сделать и с чего начать.Вы всегда хотели заняться разработкой компьютерных игр, но не знали как?Тогда вы попали по адресу. Game Maker с Ultimate3D это микс, который позволит делать захватывающие компьютерные игры с неограниченными возможностями. Так же есть форум на котором можно задовать свои вопросы по Ultimate 3D!

    Манипуляция моделями

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

    Также абсолютно обычно, что воодушевление модели придется изменить. Например, в 3rd играх особы вы, возможно, хотите вращать голову, или туловише жертвы , например когда жертва заглядывает в другое направление. Это может быть сделано с Последним 3D в двух различных способах.



    Так как вы можете посмотреть, этот прямоугольник составляется из девяти различных вершин (отмечается маленькими квадратами) и восьми треугольников. С тех пор, как каждый треугольник составляется из трех вершин, вы вероятно предполагали, что это маленькое отверстие требует, чтобы 8*3=24 вершины были описаны. Но есть только девять различных вершин, и только двое из них используются только одним единственным треугольником (отмеченная зелень). Вершину посередине использует шесть треугольников. И вещи подобно этому случаются действительно часто. К счастью, простой метод был изобретен длительное время назад, чтобы избегать этой напрасной траты памяти. Если вы имеете сложные модели, это, возможно, случается, что модель имеет дважды так много треугольников как вершин. Так как же это работает? Это довольно просто. Вы сохраняете каждую вершину точно однажды. Заказ не имеет значения. Затем вы добавляете буфер so-called индекса (и это срок, который вам нужно помнить) это содержит три индекса (номера целого числа, которые ссылаются на вершины) для каждого треугольника. Так фактически треугольник не составляется из трех вершин, но трех r.

    LockMesh( LockedMeshIndex, MeshIndex, Frame, LoD ) ;

    LockedMeshIndex -В Последнем 3D вы не можете запереть более чем 32 отверстия в то же время. Не прошла бы никакая проблема, чтобы установить высший предел здесь, но если вы не забываете об отпирании отверстий, вы не будете никогда иметь более чем 32 отверстий замкнул в то же время так или иначе. Значению для этого параметра придется быть в диапазоне с 0 до 31. Это - индекс, с которым запертое отверстие будет ассоциировано.

    MeshIndex-индекс отверстия, которое вы хотите запереть. Я рекомендую написание for-loop, чтобы образовать петли через все отверстия объекта. Вы можете использовать функцию GetMeshCount() чтобы получить число отверстий, объект имеет за рамку.

    Frame- Создайте фрейм, в которой вы хотите изменить что то. Если вы не используете эту функцию, чтобы запереть отверстие модели, загруженной от *.md2 файла, или объекта, который был создан с AddFrame(...), вы должны всегда помещать 0 для этого параметра.

    LOD -Уровень детализации, которую вы хотите изменить. Самый высокий уровень детализации имеет индекс 0. Это также значение, которое вы должны ввести, если вы площадь.

    UnlockMesh( LockedMeshIndex ) 

    LockedMeshIndex -индекс отверстия, которое вы хотите отпереть.

    UnlockMesh( LockedMeshIndex) 

    LockedMeshIndex -индекс отверстия, которое вы хотите отпереть.



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

    Эта функция изменяет единственную вершину запертого отверстия с данным индексом:

    SetLockedMeshVertex( LockedMeshIndex, VertexIndex, ValueIndex, NewValue ) 

    LockedMeshIndex -Индекс запертого отверстия, которое вы хотите изменить. Это значение, которое вы помещаете как первый параметр, обращаясь к LockMesh(...), чтобы запереть отверстие.

    VertexIndex -индекс вершины, которую вы хотите изменить. Я рекомендую написание for-loop к циклу через все вершины. Вы можете использовать GetLockedMeshVertexCount(LockedMeshIndex), чтобы получить число данных вершин запер отверстие имеет.

    ValueIndex -Индекс вершины Вы хотите изменить. Я рекомендую писать для цикла, чтобы циклически пройти всю вершину. Вы можете использовать GetLockedMeshVertexCount (LockedMeshIndex), чтобы получить число вершины, блокированные данные поймали в сети, имеет.

    ValueIndex -Этот параметр дает часть информации вершины, которая должна быть изменена. Начиная с Ultimate 3D использования различная система координат чем Game Maker эта информация сортирована следующим образом: 
    0 = VertexPositionX 
    1 = VertexPositionZ 
    2 = VertexPositionY 
    3 = VertexNormalX 
    4 = VertexNormalZ 
    5 = VertexNormalY 
    6 = VertexTextureCoordinate1U 
    7 = VertexTextureCoordinate1V 
    Тогда координаты текстуры, которые были добавлены, используя AddTextureCoordinateSet (...), следуют. Нормаль вершины - вектор, должен был вычислить освещение объектов. Обычно нет никакой потребности изменить это вручную. Если Вы изменяете геометрию сети, Вы должны назвать RecalculateNormals () однажды обновить нормали.

    NewValue 
    Новое значение Вы хотите установить для данной части данной вершины.



    Эта функция возвращает часть информации единственной вершины данной сети:
    GetLockedMeshVertex( LockedMeshIndex, VertexIndex, ValueIndex ) 

    LockedMeshIndex -Индекс блокированной сети Вы хотите изменить. Это - значение, которое Вы помещаете как первый параметр, называя LockMesh (...), чтобы блокировать сеть.

    VertexIndex -Индекс вершины Вы хотите изменить. Я рекомендую писать для цикла, чтобы циклически пройти всю вершину. Вы можете использовать GetLockedMeshVertexCount (LockedMeshIndex), чтобы получить число вершины, блокированные данные поймали в сети, имеет.

    ValueIndex -Этот параметр точно то же самое как ValueIndex в SetLockedMeshVertex (...), так взгляните на описание там.



    Эта функция изменяет вершину, которая используется для треугольника с данным индексом блокированного данного, поймали в сети.
    SetLockedMeshTriangle( LockedMeshIndex, TriangleIndex, VertexIndexA, VertexIndexB, VertexIndexC ) 

    LockedMeshIndex -Индекс блокированной сети Вы хотите изменить. Это - значение, которое Вы помещаете как первый параметр, называя LockMesh (...), чтобы блокировать сеть.

    TriangleIndex -Индекс треугольника Вы хотите измениться. Я рекомендую писать для цикла, чтобы циклически пройти все треугольники. Вы можете использовать функцию GetLockedMeshTriangleCount (LockedMeshIndex), чтобы добраться, счет треугольника блокированного данного поймали в сети.

    VertexIndexA, VertexIndexB, VertexIndexC -Индексы вершины, которая должна использоваться для треугольника. Отметьте, что заказ этих параметров действительно имеет значение, из-за отбора невидимой поверхности. Вы никогда не должны вводить значение, больше, чем счет вершины блокированного данного поймал в сети здесь. Это могло привести к серьезным проблемам дисплея.



    Эта функция восстанавливает единственный индекс вершины треугольника в данном, блокированном, поймайте в сети:
    GetLockedMeshTriangle(LockedMeshIndex,TriangleIndex, RequestedVertexIndex ) 

    LockedMeshIndex -Индекс блокированной сети Вы хотите восстановить информацию от. Это - значение, Вы записывались на первый параметр функции LockMesh, блокируя сеть.

    TriangleIndex -Индекс треугольника Вы хотите восстановить информацию о. Я рекомендую писать для цикла, чтобы циклически пройти все треугольники. Вы можете использовать функцию GetLockedMeshTriangleCount (LockedMeshIndex), чтобы добраться, счет треугольника блокированного данного поймали в сети.

    RequestedVertexIndex -Для этого параметра Вы можете пройти 0, 1 или 2, чтобы восстановить первый, второй или третий индекс вершины треугольника.



    Эта функция изменяет материал, который используется для данного треугольника данной сети:

    SetLockedMeshTriangleMaterial(LockedMeshIndex, TriangleIndex, NewMaterialIndex ) 

    LockedMeshIndex -Индекс блокированной сети Вы хотите изменить материал треугольника для. Это - значение, поступил на первый параметр функции LockMesh, блокируя сеть.

    TriangleIndex -Индекс треугольника, материал которого Вы хотите изменить. Я рекомендую писать для цикла, чтобы циклически пройти все треугольники. Вы можете использовать функцию GetLockedMeshTriangleCount (LockedMeshIndex), чтобы добраться, счет треугольника блокированного данного поймали в сети.

    NewMaterialIndex -Новый индекс материала Вы хотите установить для треугольника. Вы можете использовать GetMaterialIndex (...), чтобы получить это значение.



    Эта функция возвращает индекс материала, это в настоящее время используется данным треугольником блокированного данного, поймали в сети.

    GetLockedMeshTriangleMaterial ( LockedMeshIndex, TriangleIndex ) 

    LockedMeshIndex -Индекс блокированной сети Вы хотите восстановить информацию от. Это - значение, которое Вы помещаете для первого параметра функции LockMesh, блокируя сеть.

    TriangleIndex -Индекс треугольника Вы хотите получить информацию о. Я рекомендую писать для цикла, чтобы циклически пройти все треугольники. Вы можете использовать функцию GetLockedMeshTriangleCount (LockedMeshIndex), чтобы добраться, счет треугольника блокированного данного поймали в сети.



    Есть другая образцовая функция манипуляции, которая была упомянута пару раз прежде. Это может использоваться, чтобы добавить новый набор координат текстуры ко всем сетям объекта (сети не должны быть блокированы, делая это). Вы уже видели, как заполнить добавленные координаты текстуры данными, используя функцию SetLockedMeshVertex (...). Один легкий способ получить данные создает две версии той же самой модели с двумя различными наборами координат текстуры. Тогда Вы можете создать временный экземпляр класса второй версии модели, блокировать ее сети и сети первой модели, и скопировать координаты текстуры второй модели к первой модели в некоторых для циклов. Когда Вы сделаны с этим, Вы можете разрушить временную вторую модель. Но давайте доберемся до функции.

    Эта функция может использоваться, чтобы добавить новый многомерный набор координаты текстуры ко всем сетям объекта, который вызывает функцию (и все объекты, которые основаны на той же самой модели!).

    AddTextureCoordinateSet (DimensionCount) 

    DimensionCount -Число размерностей набор координаты текстуры должно иметь. Это значение может быть целочисленным значением в диапазоне от 1 до 4. Одна размерность означает, что есть только одно реальное значение в координате текстуры (U), две размерности означают, что есть два (U, V), три размерности означает, что есть три (U, V, W) и четыре средства, что есть четыре (U, V, W, Q).



    Наконец есть функция, которая делает использование множественных наборов координаты текстуры намного проще. Часто Вы просто должны загрузить два различных набора координаты текстуры для одной модели. Например световое отображение требует одного набора координаты текстуры для разбросанных карт и второго набора координаты текстуры для световой карты. Проблема состоит в том, что ни один из поддержанных образцовых форматов файла кроме *.u3d не поддерживает множественные наборы координаты текстуры. Решение этой проблемы создает две версии модели, каждого из них имеющий различный набор координаты текстуры. Тогда Вы можете использовать следующую функцию, чтобы объединить их оба.

    Эта функция копирует все наборы координаты текстуры данной модели к сетям образцового объекта, который вызывает эту функцию и ко всем объектам, которые основаны на том же самом образцовом файле. Сети этого объекта не должны быть блокированы.

    AddTextureCoordinateSetsFromModel (ModelFile, Пароль ) 

    ModelFile -Образцовый файл, который держит наборы координаты текстуры, которые должны быть добавлены. У этого образцового файла должно быть то же самое число сетей как образцовый объект, вызывающий эту функцию, и у всех сетей должно быть то же самое число вершины.

    Пароль -Если ModelFile обращается к зашифрованному Ultimate 3D образцовому файлу, Вы c


    Управление мультипликациями
    Особенно в играх третьего лица случается очень часто, что символ должен двигаться в интерактивном режиме. Например, если у Вас есть символ с оружием, нацеливающимся где-нибудь, его туловище должно вращаться вверх и вниз, в то время как игрок стремится вверх и вниз, заставлять его выглядеть реалистичным. Ultimate 3D предложения два различных способа сделать это. Первый просто изменяет вращение специфической кости. Это может использоваться, чтобы достигнуть желательного эффекта весьма легко, но это не обязательно выглядит что хорошим. По этой причине есть также возможность заставить специфические кости использовать другие значения кадра чем другие кости. Этим путем Вы можете например заставить верхнюю часть тела символа использовать различную анимацию чем остальные. Для обоих методов Вы нуждаетесь в функции, чтобы восстановить индекс кости, которую Вы хотите изменить.

    Эта функция возвращает индекс кости с именем, или 0, если это не существует.

    GetBoneIndex ( BoneName ) 

    BoneName-Название кости. То, что это, зависит от программы моделирования, которую Вы используете.



    Если Вы хотите сделать кое-что автоматически для всех костей в модели, полезно написать цикл, который циклически проходит все кости в модели. С этой целью Вы должны знать, сколько костей - часть модели. Эта информация может быть восстановлена через функцию GetBoneCount (), который возвращает число костей, доступных в образцовом объекте, которым это называют. Все целочисленные значения в диапазоне от 0 до GetBoneCount ()-1 являются действительными индексами кости. Другая функция, которая полезна, когда Вы хотите иметь код, который работает с костями автоматически, является следующим.

    Эта функция возвращает индекс родительской кости кости с данным индексом. Если у кости нет родительской кости-1, возвращен.

    GetBoneParent ( BoneIndex) 

    BoneIndex -Индекс кости, для которой Вы хотите восстановить индекс родителя.



    Следующая функция - та, которая может использоваться, чтобы вращать единственную кость. Обычно выглядит весьма нереалистичным, когда это используется для символьных моделей, но это может быть очень полезно для механических объектов как корпуса. Например очень легко заставить башенку корпуса вращаться с этой функцией.

    Эта функция удаляет все клавиши вращения кости с данным индексом объекта, который вызывает функцию и создает одну единственную новую клавишу вращения с данным вращением.

    SetBoneRotation ( BoneIndex, RotationX, RotationY, RotationZ ) 

    BoneIndex -Индекс кости Вы хотите измениться.

    RotationX, RotationY, RotationZ -Новое вращение. Переменные интерпретируются таким же образом как переменные rotx, roty и rotz образцовых объектов.



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

    Эта функция может использоваться, чтобы установить другое значение кадра для специфической кости объекта, которым это называют.

    SetBoneFrame ( BoneIndex, frame, AffectChildBones) 

    BoneIndex-Индекс кости Вы хотите изменить значение кадра для.

    frame-Позитивное значение, дающее абсолютное значение кадра, которое должно использоваться для кости. Это будет использоваться вместо значения переменной кадра, resp. возвращаемое значение GetCurrentFrame (). Если Вы передадите отрицательную величину то вместо этого, модель будет использовать значение, данное кадром снова.

    AffectChildBones -Если Вы передадите истину для этого параметра, то данное значение кадра будет использоваться не только для кости с индексным BoneIndex, но также и для всех костей, которые присоединены к этой кости. Иначе только эта кость будет затронута. Если у одной из дочерних костей будет свое собственное индивидуальное значение кадра, установленное через SetBoneFrame (...), то этот будет использоваться вместо этого, независимо от того передаете ли Вы истину или ложь.



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

    Эта функция запускает интерполяцию от текущей позы до позы, которую модель имеет в данном кадре адресата.

    StartPoseInterpolation ( DestinationFrame, InterpolationDuration ) 

    DestinationFrame -Кадр, в котором модель сделала, чтобы адресат позировал.

    InterpolationDuration -Время интерполяция возьмет в шагах. По этому интервалу времени объект будет интерполировать между позами. После этого это продолжит запускать анимацию в DestinationFrame, если значения first_frame и last_frame не позволят этому. Если Вы хотите прервать интерполяцию позы, Вы можете вызвать эту функцию снова и передать нуль для этого параметра.



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

    Эта функция копирует анимацию от данного образцового файла до образцового объекта, которым это называют. Это делает это, заменяя все ключевые кадры в анимации этого образцового объекта, сохраненными в данном образцовом файле.

    CopyAnimation ( SourceFile, SourceFilePassword, CopyRotationKeysOnly) 

    SourceFile -Исходный файл, с которого Вы хотите скопировать анимацию. Вы можете хотеть к предварительной загрузке, чтобы этот образцовый файл через PreloadMesh (...) избежал задержки.

    SourceFilePassword -Если исходный файл - зашифрованный Ultimate 3D образцовый файл (*.u3d), Вы можете передать пароль к этому параметру. Иначе Вы должны передать пустую строку.

    CopyRotationKeysOnly -Если этот параметр будет истиной, то функция скопирует исключительно клавиши вращения, иначе все клавиши хорошо скопированы. Если скелет объекта модели адресата не соответствует скелету исходной модели точно, это может быть желательно.



    Эта функция должна использоваться тщательно. Это может только работать правильно, если у исходной модели и объекта модели адресата есть идентичные скелеты. Если Вы передаете истину для CopyRotationKeysOnly, это может также работать для моделей, с немного различными скелетами, но Вы не должны положиться на это.


    Создавание таможенных сетей
    В некоторых случаях необходимо создать сети на пустом месте. Это может легко быть сделано с Ultimate 3D. Вы создаете эти объекты таким же образом как все другие объекты. Сначала Вы устанавливаете несколько переменных, тогда Вы вызываете функцию создания однажды, и наконец Вы должны добавить Шаг () и Разрушить () к соответствующим событиям.

    material_count 
    Число материалов новый объект будет иметь. Это значение не может быть нулем.

    vertex_count 
    Число вершины единственная сеть нового объекта будет иметь. Это должно быть больше чем три.

    triangle_count 
    Число треугольников единственная сеть нового объекта будет иметь. Это значение не может быть нулем.



    После установки этих переменных Вы можете назвать CreateEmptyMesh (). Тогда объект с данным материалом, вершиной и счетом треугольника будет создан и связан с объектом, который вызывал функцию. После того, как Вы добавили Шаг () и Разрушаете (), объект готов использоваться. Но прежде, чем Вы получаете некоторые видимые результаты, Вы должны использовать образцовые функции манипуляции, которые я вводил выше, чтобы заполнить сеть действительной геометрией. По умолчанию все данные вершины и индексные данные будут заполнены нулями, и все материалы будут белым и нетекстурируемый.



    Предварительно сделанные образцовые функции манипуляции
    Есть несколько операций манипуляции сети, которые должны делаться очень часто. Ultimate 3D предложения несколько удобных в работе функций, чтобы выполнить эти операции. Самый важный повторно вычисляет нормальные векторы, которые обязаны становиться правильными за освещение вершины. Другой приглаживает нормали сетей. Это означает, что это ищет вершину, у которой есть та же самая позиция, но различная нормаль, чтобы установить это. Третий вычисляет кое-что названное обратными матрицами пространства тангенса для каждой отдельной вершины. Краткое объяснение того, что это означает, может быть найдено ниже.

    Эта функция вычисляет нормаль вершины для каждой вершины каждой сети объекта, который вызвал функцию. Это нужно назвать всякий раз, когда Вы изменяете геометрию сети, потому что тогда старые нормали не будут текущими больше. Это не берет параметров.

    RecalculateNormals () 


    Случается весьма часто, что видимые складки происходят в поверхности, если нормали, вычисляют этот путь. Так как нормали не только требуются для световых вычислений но также и для эффектов, таких как затенение буфера перемещаемого изображения и среда, отображающая, это очень нежелательно. Следующая иллюстрация показывает модель, которая использует отображение среды, просмотры, если есть складки в этом.


      

    Избегать этого, Ultimate 3D предложения простая функция. Это ищет складки в модели и если это находит некоторых, это приглаживает их. Вот его описание.

    Эта функция ищет вершину с идентичными позициями, но различные нормали. Если это находит некоторых, это проверяет, меньше ли угол между их нормалями чем данный угол, и раз так это приглаживает их. Отметьте, что этот процесс - очень вычислительное интенсивное время.

    SmoothNormals (SmoothingAngle ) 

    SmoothingAngle -Угол сглаживания в степенях. Функция приглаживает нормали двух вершин только, если угол между ними меньше чем этот угол.



    У следующей функции есть очень особое назначение. Если Вы не хотите войти в программу построения теней пиксела, программируя Вас, не нуждаются к undestand в этом. Вы можете хотеть пропустить следующее объяснение. Много специальных эффектов, особенно те, которые осуществляют своего рода за освещение пиксела, используют нормальные карты. Нормальные карты дают нормали в течение текстуры. Это пространство называют пространством тангенса. Информация как позиция источников освещения обычно дается в течение сети. По этой причине путь необходим, чтобы получить информацию об источнике освещения от пространства сети в пространство тангенса. Матрица (см. главу о математических функциях) необходима, чтобы это принесло информацию от пространства сети в пространство тангенса. И так как каждый треугольник текстурируется по-другому, эта матрица необходима для каждой вершины.

    Эта функция вычисляет обратные матрицы пространства тангенса (сеть к пространству тангенса) для каждой вершины каждой сети объекта, который вызывает функцию, означая, что это записывает поверх нормали сети с третьим столбцом матрицы. Обычно третий colum очень похож к нормалям, таким образом это не большое изменение. Это также добавляет два новых трехмерных набора координаты текстуры. Первый из них будет использоваться, чтобы сохранить первый столбец обратных матриц пространства тангенса, второй будет использоваться, чтобы сохранить второй столбец. Функция не берет параметров.

    AddInverseTangentSpaceMatrices () 



    Затенение буфера перемещаемого изображения
    Затенение буфера перемещаемого изображения - методика, это обычно используется, чтобы создать графику, которая смотрит, как будто они - часть комика. Это может также использоваться, чтобы отметить специфические объекты, создавая схему вокруг них. Затенение буфера перемещаемого изображения в основном создает вытесненную версию каждой сети и выполняет ее использующий обратный отбор невидимой поверхности. Это приводит к схеме вокруг модели. Применяя затенение буфера перемещаемого изображения Вы можете определить ширину схемы в пространстве сети и цвете схемы. Обычно цвет схемы - солидный афроамериканец. Но Вы можете также использовать другие цвета, чтобы достигнуть других довольно крутых эффектов. Например Вы можете использовать прозрачную красноту, чтобы получить сильный диакритический знак для объекта, к эффекту относятся. Предоставление возможности затенения буфера перемещаемого изображения довольно легко. Вот функция, которая делает это:

    Эта функция позволяет затенение буфера перемещаемого изображения для образцового объекта, которым это называют.

    ApplyCelShading (LineWidth , LineColorR, LineColorG, LineColorB, LineColorA ) 

    LineWidth -Ширина схемы Вы хотите создать в пространстве сети.

    LineColorR, LineColorG, LineColorB, LineColorA-Цвет схемы. Значения для этих параметров должны быть между от 0 до 255. LineColorA дает opacity схемы. 0 средств никакой opacity (полностью прозрачный) и 255 полностью непрозрачных средств.



    Отметьте, что затенение буфера перемещаемого изображения использует программу построения теней вершины. По этой причине модели, которые используют вершину, очищающую и оттеняющую буфер перемещаемого изображения, не должны использовать больше чем 28 костей, иначе некоторые кости не применить правильно.




    © Shkola Ultimate 3D . Все права защищены.Макарский Роман (ASD_W_GAMES) And Беляков Вячеслав (ZXC76)
    Author:
    © Christoph Peters. Some rights reserved.


    Школа Ultimate3D 2009-2010 год