Jump to content

TEDERIs

Members
  • Posts

    153
  • Joined

  • Last visited

  • Days Won

    2

Posts posted by TEDERIs

  1. Доброго времени суток. Секрет здесь в модели персонажа. Перед тем как попасть в игру, моделька снабжается весами для каждой вершины и направляющими векторами. Затем вектора пакуются во float и помещаются в дополнительные UV каналы. В шейдере вектор распаковывается и перемножается на вес. Дальше уже заурядное перемножение на юниформ константу. Тело персонажа делится на 6 зон морфинга, каждая зона утилизирует однин из двух доп. UV каналов, и твикается доп. константами чтобы добавить морфинг для определённых частей тела. 

  2. On 06/02/2019 at 18:59, Erema93 said:

    Возможно подключить скриптом подключить дополнительные пути для рельсового  транспорта с помощью скрипта?
    Видел на одном сервере, где рельсовый транспорт ездит по разным маршрутам, но ведь в оригинальной GTA лимит путей очень маленький. Хотелось бы знать, с помощью чего прописывать пути, как их подключать (если возможно скриптом в MTA)?

    Любой транспорт, включая рельсовый, может приобрести любого вида движение с помощью функции setElementPosition. Достаточно определить пути, и покадрово обновлять положение транспорта в событии onClientPreRender. Аргумент dt этого события поможет сделать движение одинаковым вне зависимости от частоты кадров.

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

  4. Дерево элементов - это простейшая структура, которая напоминает собой настоящее дерево с ветвями. Места объединения ветвей называют узлами или нодами. Root - это нематериальный узел, который просто стоит выше всех в дереве. Ниже идут узлы игроков и ресурсов. Дерево очень полезно при вызове определенных событий. Например, если мы хотим, чтобы событие распространялось на все элементы дерева - нужно просто вызвать triggerEvent и указать root или getRootElement(). При этом событие пройдет по всем ветвям и узлам, дав о себе знать всем без исключения нодам. Но представим ситуацию, что мы хотим затронуть лишь определенные узлы, начиная с некоторого. Что для этого нужно сделать? Верно, расположить эти узлы под каким-то другим узлом и вызвать triggerEvent, указав этот самый узел. Событие будет распространяться только по нисходящим дочерним узлам. Функция getElementRoot() возвращает root элемент. То есть, можно сказать root = getElementRoot(), они идентичны, и переменная root нужна просто для удобства. Точно так же обстоят дела с getResourceElement(getThisResource()), которая идентична resourceRoot. Если мы хотим, чтобы событие затронуло только элементы под узлом resourceRoot - мы вызываем triggerEvent("onSomeEvent", resourceRoot, ...). Если заходить дальше, то вызов triggerEvent так же затрагивает узлы выше. То есть, triggerEvent("onSomeEvent", player, ... ) так же даст о себе знать root элементу. По поводу того, что такое дерево можно более подробно поискать в интернетах.

    • Like 1
  5. Если ElementData только локально на клиенте, то это не окажет никакого влияния на сервер. Если ElementData используется для синхронизации между клиентом и сервером, то здесь есть два фактора, влияющих на производительность:

    • Частота изменения ElementData. Чем чаще вызывается setElementData, тем хуже.
    • Длина имени ElementData и объем синхронизируемых данных. Чем длина имени больше и чем объем данных больше, тем хуже.
  6. On 03.06.2018 at 05:49, Ren_712 said:

    I noticed that you can get some information in vs from BLENDINDICES0 and BLENDWEIGHT0 semantics. This along with NORMAL can provide you with enough information to morph facial features , body etc . Works with any ped, however requires a lot of model related tweaking.

    le_neck.jpgbone_Indices18.png

    So what method did You use to morph the ped ?

    4

    I didn't use the default semantics because they provide bone-relative information only. It's not enough for appropriate morphing. Instead, I have baked morphing normals into vertex elements(normals and other) as a scalar for each morphing feature. Thus for three morphing features is required three floats or one vector(normal, for instance). In an example for the breast from the video above, I packed the normals to a scalar and calculate attenuation weights. At a shader side, these normals should be unpacked and multiplied by weights. In this way, it's possible to create universal morphing regardless of its complexity.

  7. Hello everyone. About 3 years ago I have worked on some project and got experiments on skin morphing. The video below shows some results in that:

    MTA gives all opportunities for creating a morphing for a face, body or something else. I hope in the future someone makes a full-customizable character.

    • Like 1
  8. 15 hours ago, Dzsozi (h03) said:

    And how do I do that? I don't know.

    Just use the code above to render your object with any contrast color. Then write simple post-processing shader, that finds the contrast color, converts it to black-n-white and delimits your object from a background. In case of the depth buffer, you might use the example from wiki . It probably also will require hiding of all world objects. For this is possible to use vertex shader that moves all vertices far away.

    By the way, a sample of the second approach you can watch here

  9. What about the post-processing? It is possible to color some object with world-shader and then just cut off all the rest by post-processing. Or use the depth buffer to remove a background.

  10. There are plenty approaches to do it. You may use server-side text via the textCreateDisplay function. Or client-side dxDrawText to use DirectX opportunities. Moreover, you can you GUI elements via the guiCreateLabel. You should learn all about them and select the best one for you.

×
×
  • Create New...