Jump to content

TEDERIs

Members
  • Posts

    153
  • Joined

  • Last visited

  • Days Won

    2

TEDERIs last won the day on August 29 2020

TEDERIs had the most liked content!

Details

  • Gang
    Citizen
  • Interests
    Programming and engineering

Recent Profile Visitors

3,459 profile views

TEDERIs's Achievements

Busta

Busta (15/54)

19

Reputation

  1. Good news, everyone! I think some of you had already heard about my project Oblivion Lost: Online(or The Exclusion Zone now). Today I have decided to release all the things around this project. All the resources are published right now. Enjoy it because it was made with LOVE! Comes with batteries included! The link: https://github.com/tederis/theexzone
  2. Доброго времени суток. Секрет здесь в модели персонажа. Перед тем как попасть в игру, моделька снабжается весами для каждой вершины и направляющими векторами. Затем вектора пакуются во float и помещаются в дополнительные UV каналы. В шейдере вектор распаковывается и перемножается на вес. Дальше уже заурядное перемножение на юниформ константу. Тело персонажа делится на 6 зон морфинга, каждая зона утилизирует однин из двух доп. UV каналов, и твикается доп. константами чтобы добавить морфинг для определённых частей тела.
  3. Нет, на данный момент такой возможности нет
  4. Любой транспорт, включая рельсовый, может приобрести любого вида движение с помощью функции setElementPosition. Достаточно определить пути, и покадрово обновлять положение транспорта в событии onClientPreRender. Аргумент dt этого события поможет сделать движение одинаковым вне зависимости от частоты кадров.
  5. A simple mask shader should help you. Just create an arrow texture and use it along with the mask shader. An example of this shader you can find at Shader_examples
  6. Самое простое - рисовать сектора при помощи текстуры. Но это может дать неудовлетворительные результаты из-за растрового характера текстуры, будет сложно масштабировать и варьировать кол-во секторов. Поэтому шейдер в самом деле хороший выбор. Но что имеется в виду под прозрачностью? Судя по скриншоту здесь наверное имелось в виду размытие фона. Для этих целей используется screen-space шейдер на подобии blur. Поверх блюра уже рисуется колесо выбора оружия.
  7. Дерево элементов - это простейшая структура, которая напоминает собой настоящее дерево с ветвями. Места объединения ветвей называют узлами или нодами. Root - это нематериальный узел, который просто стоит выше всех в дереве. Ниже идут узлы игроков и ресурсов. Дерево очень полезно при вызове определенных событий. Например, если мы хотим, чтобы событие распространялось на все элементы дерева - нужно просто вызвать triggerEvent и указать root или getRootElement(). При этом событие пройдет по всем ветвям и узлам, дав о себе знать всем без исключения нодам. Но представим ситуацию, что мы хотим затронуть лишь определенные узлы, начиная с некоторого. Что для этого нужно сделать? Верно, расположить эти узлы под каким-то другим узлом и вызвать triggerEvent, указав этот самый узел. Событие будет распространяться только по нисходящим дочерним узлам. Функция getElementRoot() возвращает root элемент. То есть, можно сказать root = getElementRoot(), они идентичны, и переменная root нужна просто для удобства. Точно так же обстоят дела с getResourceElement(getThisResource()), которая идентична resourceRoot. Если мы хотим, чтобы событие затронуло только элементы под узлом resourceRoot - мы вызываем triggerEvent("onSomeEvent", resourceRoot, ...). Если заходить дальше, то вызов triggerEvent так же затрагивает узлы выше. То есть, triggerEvent("onSomeEvent", player, ... ) так же даст о себе знать root элементу. По поводу того, что такое дерево можно более подробно поискать в интернетах.
  8. TEDERIs

    MTA ASE Parser

    Hi everyone! I have made a simple parser of ASE bytecode to convert it to JSON format. Maybe it'll be useful for someone else. The program automatically downloads bytecode and writes it to readable JSON text plain. Mainly it was developed for Linux purposes, but may be simply built under the Windows. https://github.com/tederis/ase2json
  9. I think a shader is the best choice. Here you can find lots of examples.
  10. Если ElementData только локально на клиенте, то это не окажет никакого влияния на сервер. Если ElementData используется для синхронизации между клиентом и сервером, то здесь есть два фактора, влияющих на производительность: Частота изменения ElementData. Чем чаще вызывается setElementData, тем хуже. Длина имени ElementData и объем синхронизируемых данных. Чем длина имени больше и чем объем данных больше, тем хуже.
  11. 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.
  12. So, I have released the resource from the video. There is a complex login system that includes the logo, rain rendering, and custom UI example. I hope it helps you. https://github.com/tederis/mta-resources/tree/master/sp_login
  13. I have added the new resource that may be helpful for creating your own login system. It's also an example for using the depth-buffer. https://github.com/tederis/mta-resources/tree/master/sp_login
  14. 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.
×
×
  • Create New...