26

» Помойка Макебы / Архимонд пришёл на вечеринку (сюжет и ролики)

Какой-то испанский варкрафт ютубер с каналом на 10к подписюнов. И у него просмотров больше, чем у павла
Загруженные файлы
26

» XGM Team / Онлайн-инструменты для геймдев и моддинг арта

Говорят, добавлена поддержка стандартных текстур)
О, видно, что .mrf не поддерживается
26

» WarCraft 3 / Священник Министорума

Таки понял как тула работает, там два варианта конверта, можно в obj, а можно в .json, нужно json.
biridius:
скрипт для смены осей анимаций переноса
Хм, а что там с чем поменять надо? А то при импорте в блендор ломаются
Загруженные файлы
26

» WarCraft 3 / Священник Министорума

biridius, блендеровскому скрипту нужен файл *.meshdata.json, но сама прога почему-то не выдаёт его. Я поставил её, и через командную строку скормил модель, что ты дал. На выходе получился статичный .obj, описание скелета в формате .json, и ещё текстовик для материала. Может быть проге нужны ещё файлы, чтобы всё распарсить? Типа фул распакованный SGA архив указать нужно? Честно говоря, я сам хз
26

» WarCraft 3 / Священник Министорума

Вот это не проверял?
A tool for parsing and extracting assets from Relic Entertainment games; primarily Dawn of War I, DoW II, and DoW III.
Вроде по этой теме, там есть примерная спецификация этих моделей, и даже какой-то скрипт для блендера лежит.
26

» WarCraft 3 / Священник Министорума

biridius, а есть пример исходника модельки? Я имею ввиду не максовскую сцену, а именно .whm или что там по дефолту в игре лежит
26

» StarCraft 2 / .m3 аддон для Blender

В хотсе .m3, которые можно без проблем запихивать в блендер этим аддоном. Я для этого его и использовал, чтобы потыкать модели из хотса в блендере. Единственное, что конкретно у героев есть сложность. С ними идёт две арматуры: одна для основных анимаций, другая для лицевой, сответственно, их нужно как-то связывать друг с другом, ибо если использовать только основную арматуру, то на месте лица будет каша. Я пока сходу не понял, как с этим работать.
Годно, осталось файлы игры подогнать
В CASCView есть функция Online Storage, где можно получить доступ к архивам близзовским игр, не скачивая их. Я оттуда и вытянул модель и текстуры Банши из старкрафта, которую показал в шапке ресурса. Но это всё не очень шустро происходит.
26

» WarCraft 3 / BLP Laboratory (blplab)

где включить галку чтобы сохранял в blp не 2^x картинки?
если он не умеет, то какая прога умеет?
Это же просто предупреждение, она всё равно сохранит файл.
War3ME умеет пикчи в блп конвертировать, ретера Твилака тоже вроде
26

» WarCraft 3 / Управление камерой - нативки

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

» WarCraft 3 / Объект с заменяемой текстурой для фона

Так а в чём сложность самостоятельно сделать такую модель? Любой формы и размера, с любой текстурой.
Загруженные файлы
26

» WarCraft 3 / Где в mdx посмотреть требование для высокого качества текстур ?

Короч вот сырец, развлекайтесь
тык
using System;
using System.IO;
using System.Linq;
using System.Collections.Generic;

namespace blp_res_checker
{
    internal class Program
    {
        static void Main(string[] args)
        {
            if (args.Length == 0)
            {
                Console.WriteLine("Please drag and drop the folder onto the exe file.");
                Console.ReadLine();
                return;
            }

            var directory = args[0];
            var files = Directory.GetFiles(directory, "*.blp", SearchOption.AllDirectories);

            List<string> validFiles = new List<string>();
            List<string> invalidFiles = new List<string>();

            foreach (var file in files)
            {
                using (var stream = File.OpenRead(file))
                {
                    var buffer = new byte[4];
                    stream.Read(buffer, 0, buffer.Length);
                    var magic = System.Text.Encoding.Default.GetString(buffer);
                    if (magic != "BLP1")
                    {
                        continue;
                    }

                    stream.Seek(8, SeekOrigin.Current);
                    buffer = new byte[8];
                    stream.Read(buffer, 0, buffer.Length);

                    var val1 = BitConverter.ToUInt32(buffer.Take(4).ToArray(), 0);
                    var val2 = BitConverter.ToUInt32(buffer.Skip(4).Take(4).ToArray(), 0);

                    if (!IsPowerOfTwo(val1) || !IsPowerOfTwo(val2))
                    {
                        invalidFiles.Add($"{file} is a broken file. Resolution: {val1} x {val2}");
                    }
                    else
                    {
                        validFiles.Add($"{file} is a valid file. Resolution: {val1} x {val2}");
                    }
                }
            }

            string outputFilePath = Path.Combine(directory, "output.txt");
            using (StreamWriter sw = new StreamWriter(outputFilePath))
            {
                WriteOutput(sw, $"Total BLP files checked: {files.Length}");
                WriteOutput(sw, $"Valid BLP files: {validFiles.Count}");
                WriteOutput(sw, $"Invalid BLP files: {invalidFiles.Count}");

                WriteOutput(sw, "\nInvalid Files:");
                foreach (var file in invalidFiles)
                {
                    WriteOutput(sw, file);
                }

                WriteOutput(sw, "\nValid Files:");
                foreach (var file in validFiles)
                {
                    WriteOutput(sw, file);
                }
            }

            Console.WriteLine($"\nThe results have been written to {outputFilePath}");
            Console.ReadLine();
        }

        static bool IsPowerOfTwo(uint x)
        {
            return (x != 0) && ((x & (x - 1)) == 0);
        }

        static void WriteOutput(StreamWriter sw, string output)
        {
            sw.WriteLine(output);
            Console.WriteLine(output);
        }
    }
}
26

» WarCraft 3 / Где в mdx посмотреть требование для высокого качества текстур ?

туда еще можно добавить экспорт в txt, потому что если файлов больше 300 (или если у них длинный путь), то окно забивается и скролится вниз, верхние пропадают
Разумно.
ресурс будешь создавать? а то могу, добро пропадает
Таки не думаю, что это нужно в базе
Загруженные файлы
26

» WarCraft 3 / Где в mdx посмотреть требование для высокого качества текстур ?

а вот этот вот blp_res_checker уже опубликован или это твой личный никомунидашный?
Но он же прикреплён к комменту выше...
26

» WarCraft 3 / Где в mdx посмотреть требование для высокого качества текстур ?

как мне это узнать без краш-брутфорса всех моделей по одной, чтобы выявить проблемную?
Ну такое решение можно запилить, спарсить разрешение всех блп из папки
А чинить уже ручками, так как скорее всего там и uv придётся подправлять после смены разрешения текстуры
26

» WarCraft 3 / Где в mdx посмотреть требование для высокого качества текстур ?

Для начала, нужно сделать нормальную текстуру, с длинами сторон равными степени двойки. Потом проверять в игре.
Загруженные файлы
26

» WarCraft 3 / Импортёр/экспортёр для Blender 3D с поддержкой mdx1000 и mdx1100

Вышла новая версия! Прокрутить к ресурсу
  • Fixed an issue with exporting scaling animations
  • Removed the need for meshes to have a material to be able to export
  • Removed the need for meshes to be rigged to an armature to be able to export
  • Added support for to use empties as parents (might not work in every situation)(will produce wonky results if used with "Use Actions")
  • Added some support for exporting meshes with object animations (translation, rotation and scaling; not shapekeys)
only tested stuff in 3.4
26

» Помойка Макебы / первый mrf комом

Интересно, можно ли это победить? Плоские меши работают нормально, но у любого объёмного возникает такая проблема, даже статичного.
26

» Помойка Макебы / первый mrf комом

Чего-то я всё-таки не понимаю.
Позиции вершин экспортируются правильно, то ли я с нормалями косячу, то ли с треугольниками
Загруженные файлы
26

» Помойка Макебы / первый mrf комом

А ещё есть подозрение, что uv-развёртка внутри мрф отзеркаливается по Y, но, возможно, это очередная ошибка моего экспортёра
Оказалось, что да. Как при импорте в блендер, так и при экспорте из него V координату нужно отзеркаливать. Например вот, только теперь у меня коричневая часть текстуры оказалась так где надо.
26

» Помойка Макебы / первый mrf комом

А мрф может меняться (или анимация видимости) в зависимости от проигрываемой анимации?
Анимация только одна на файл. Или речь про mdx?
Mrf можно отображать и скрывать через событийные объекты типа MRF и MRD соответственно.
В дефолтной модели это выглядит так:
EventObject "MRFX0000" {
	ObjectId 173,
	EventTrack 1 {
		19300,
	}
}
EventObject "MRDX0000" {
	ObjectId 174,
	EventTrack 1 {
		22300,
	}
}
EventObject "MRFX0001" {
	ObjectId 175,
	EventTrack 1 {
		28133,
	}
}
EventObject "MRFX0002" {
	ObjectId 176,
	EventTrack 1 {
		49833,
	}
}
EventObject "MRFX0003" {
	ObjectId 177,
	EventTrack 1 {
		55933,
	}
}
EventObject "MRFX0004" {
	ObjectId 178,
	EventTrack 1 {
		60633,
	}
}
EventObject "MRFX0005" {
	ObjectId 179,
	EventTrack 1 {
		72867,
	}
}
EventObject "MRDX0001" {
	ObjectId 180,
	EventTrack 1 {
		36067,
	}
}
EventObject "MRDX0002" {
	ObjectId 181,
	EventTrack 1 {
		52433,
	}
}
EventObject "MRDX0003" {
	ObjectId 182,
	EventTrack 1 {
		58333,
	}
}
EventObject "MRDX0004" {
	ObjectId 183,
	EventTrack 1 {
		62500,
	}
}
EventObject "MRDX0005" {
	ObjectId 184,
	EventTrack 1 {
		74633,
	}
}
То есть на кадре 19300 показали мрф, на кадре 22300 — спрятали. Да, можно проиграть несколько разных мрф из одной mdx модели (пока ещё не проверял можно ли их проигрывать одновременно), и раскидать их по секвенциям.
26

» Помойка Макебы / первый mrf комом

Хорошо, но как это применять? Делать эффект sliding window как в macos?
каво

Я вроде бы понял как избегать проваливания под рельеф. Ответственность за это полностью лежит на настройках камеры внутри mdx

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

А ещё есть подозрение, что uv-развёртка внутри мрф отзеркаливается по Y, но, возможно, это очередная ошибка моего экспортёра