* * * Форумы на Наша-Life THREAD * * * -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- THREAD : Партиклы и все что с ними связано. Started at 12-10-2010 11:15 by lilo.panic Visit at https://bbs.hl-inside.ru/showthread.php?threadid=54625 -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 1] Author : lilo.panic Date : 12-10-2010 11:15 Title : Партиклы и все что с ними связано. Доброго времени суток) Впечатленный работой abnoksius полез ковырять партиклы, а русскоязычных туторов для соурс не нашел. По крайней мере "партиклы source" ведут на страницу сталкера. Решил перевести кусок валв-вики. ([url]http://developer.valvesoftware.com/wiki/Particle_System_Overview[/url]) И еще. Я не шибко крутой переводчик, поэтому более или менее технически грамотно написано только то, что я уже сам проверил :) [b]Создание первой системы частиц.[/b] Часто проще взять готовую систему и модифицировать ее под свои нужды. Чтобы создать систему достаточно нажать кнопку "Create" и ввести название системы. Сейчас вы создали полностью пустую систему. Без каких-либо плагинов она не будет ничего делать. Существуют несколько основных компонентов, которые нужно добавить. Итак, начнем. Для начала нужно добавить "Animated Sprite Renderer" - он будет рендерить систему. Далее, нам захочется указать где будут создаваться партиклы. Идем в "Initiolizers" добавляем "Position Within Sphere Initializer". Установим максимальную и минимальную скорость на 64. Без установки начальной позиции партиклы не будут знать откуда им начинать появляться. Далее добавим "Continious Emitter". Должен появиться белый квадрат. Будет изучаться целая туча партиклов (1000/1004) с текстурой по умолчанию. Не смотря на то, что для партиклов была установлена минимальная и максимальная скорость, они не движутся. Также они постоянно создаются и никуда не исчезают. Это потому, что у них нет оператора. Даже не смотря на то, что у них установлена начальная позиция и скорость, ничего не будет происходить. Нам нужно два оператора. Первый - "Movement Basic". Он позволяет партиклам двигаться. Второй - "Lifespan Decay". Этот оператор будет убивать партиклы по истечению срока жизни. Сейчас вы должны наблюдать как движутся партиклы и исчезают через секунду. По дефолту срок жизни партикла - 1 секунда. Срок жизни партикла устанавливается во время создания, для того чтобы его имзенить добавим "Lifespan Random Initializer". Почти все инициализаторы и операторы поддерживают случайные значения в заданном интервале. Если нужно, чтобы частицы жили от 2х до 4х секунд, установим соответсвующие значение в поля min/max рандомного инициализатора. Теперь поменяем текстуру. Зайдем в "Properties" и установим другой материал для нашего спрайта. Материал партикла должен использовать SpriteCard шейдер (ищите текстуры имеющие в названии пути до них particle). Теперь добавим "Alpha Fade Out Random" оператор. Партиклы будут "испаряться" в течение промежутка их жизни. По умолчанию - это последние 25% жизни. [b]Партиклы и производительность[/b] [b]Максимальное количество партиклов[/b] По умолчанию система может содержать не более 1004 партиклов. Память выделяется статически под систему целиком, т.е. под 1004 партикла. Так что, после настройки системы стоит посмотреть на счетчик реально ипользуемых партиклов и ограничить их максимальное число реально используемым. [b]Поточность.[/b] Партиклы используют многопоточность посистемно. Если у вас много систем, то каждая система будет помещена в свой поток (?). Так что стоит разделять сложные системы на множества, дабы ощутить всю радость поточности. Также, система и ее дети находятся в одном потоке, поскольку должны обмениваться данными. И не стоит забывать о ряде ограничений, делающим подобный подход не всегда оправданным, например в случае не шибко больших систем. (?) SIMD В данным момент большинство операторов, инициализаторов и т.д. работают в "SIMD" (Single instruction, multiple data; [url]http://ru.wikipedia.org/wiki/SIMD[/url]). Это означает, что на текущем железе партиклы обсчитываются по 4 штуки за раз (?) Поэтому стоит ограничивать кол-во партиклов значением кратным четырем (например, округлять максимальное кол-во партиклов в меньшую сторону), таким образом система частиц будет использоваться более эффективно. Это не даст огромного прироста производительности, но все же. Перерисовка (overdraw) Перерисовка вызвана наложением слоев друг на друга. В vmt есть полезные параметры: - $minfadesize && $maxfadesize. Партикл начинает появляться/исчезать в зависимости от использованного места на экране (?) - $maxsize - максимальный размер, которого может достигнуть партикл - $minsize - $blendframes 0/1. По умолчанию анимированные текстуры смешиваются из кадров попарно (?). /* Тут мне стало лень это переводить. */ [b]Рендеры системы частиц.[/b] render_animated_sprites Рендерит анимированные спрайты в различных ориентациях. animation rate Скорость анимации orientation_type Тип ориентации: 0 - Billboarded (направлены на камеру) 1 - фиксированное значение по оси Z и вращение вокруг x/y 2 - фиксированное значение по оси X и Y и вращение вокруг Z (лицом наверх :)) orientation_control_point Позволяет установить ориентацию, но не работает (с). render_rope Рендерит все партиклы системы как одну длинную веревку. Сглаженность регулируется через изменение texel_size и subdivision_count. Уничтожение партиклов будет сопровождаться перерисовкой веревки для достижения ее непрерывности, а это в свою очередь будет сопровождаться миганием. Поэтому случайный срок жизни частицы для этого случая - ад. render_screen_velocity_rotate В валв-вики на этом месте ничего нет. Эксперименты ничего не дали. render_sprite_trail Рендеринг анимированных спрайтов со следами, длина которых (?) основана на их скорости. (я лично докрутился до эффекта "через звезды", как в ласт главе хл2) [b]Излучатели частиц.[/b] emit_instantaneously Излучает частицы вспышкой. emission_start_time Время начала излучения. num_to_emit Количество партиклов в вспышке. num_to_emit_minimum The minimum number of particles to emit in a burst. Минимальное количество партиклов. Любое значение, отличное от -1 будет означать излучение случайного числа частиц в диапазоне между указанным в этом поле значением и num_to_emit maximum emission per frame Максимальное число партиклов на фрейм. Например, если фпс=30, а max_emission_per_frame=1, то за секунду будет создано 30 партиклов. emit_continuously Продолжительное излучение частиц в течение указанного периода времени. emission_start_time Время начала излучения частиц (секунды) emission_rate Количество создаваемых партиклов в секунду emission_duration Время излучения частиц. emit noise (пустота) п.с. пока больше ничего не смотрел, может потом еще чего-то переведу своим надмозгом, если конечно такой перевод устраивает кого-то :) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 2] Author : stridemann Date : 12-10-2010 11:19 Оо. Респект дружище. Вечерком почитаю... -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 3] Author : abnoksius Date : 12-10-2010 11:37 А что, толково переведено, держи +5 :). Вообще инфы в вальв вики по ним не так уж и много, что печально, приходится методом тыка разбираться что к чему, вкуривать как устроены вальвовские системы. Быть может если будет время сам напишу о своих открытиях, не помешало бы составить хотя б какую-никакую документацию по имеющимся видам initializers и operators, и их параметрам, написать туторов каких. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 4] Author : lilo.panic Date : 12-10-2010 13:52 Продолжаю переводить инициализаторы. Не все переведено адекватно) Если неточность фатальна, то просьба сообщить мне через ПМ, я поправлю. [b]Инициализаторы.[/b] Инициализаторы инициируют начальные значения параметров частицы. Кэп. [b]Alpha Random[/b] Устанавливает случайное значение прозрачности. 0 - прозрачно полностью, 255 - непрозрачно напрочь. alpha_min alpha_max Минимальное/максимальное значение альфы на партикл. alpha_random_exponent - ? [b]Color Random[/b] Окрашивает партикл в цвет из указанного диапазона значений, и/или оттеняет цветом мира. color1 color2 Диапазон цветов частиц tint_perc % влияния местного освещения на цвет партикла tint control point Местоположение локации откуда берется цвет (?). Отключает уникальный цвет для партиклов (?) tint control point movement threshold Оптимизация. Инициализатор только обновляет оттенок освещения, если контрол поинт сместился на некоторое значение с момента предыдущего обновления. (?) tint clamp min/max Фиксирует семпл освещения в указанном диапазоне. Сохраняет освещение в ожидаемом диапазоне значений. (???!!!) [b]Inherit Velocity[/b] Если эмиттер припаренчен к передвигающейся энтите, он будет добавлять свою скорость к каждому партиклу. velocity scale Нормализованное процентное отношение наследуемой скорости. Может быть больше 100% [b]Position Within Box Random[/b] Частицы образуются в случайном месте бокса с заданными размерами. x_min x_max +/- X units y_min y_max +/- Y units z_min z_max +/- Z units [b]Lifetime from Sequence[/b] Устанавливает время жизни частицы на основе продолжительности анимации и фпс. Используется в случае, когда один тип частиц состоит из множества последовательностей с разной длиной (в одной последовательности 10 кадров, в другой 60, но все они должны проигрываться адекватно без замедленения частоты кадров проигрывания) (я так понял, что это - что-то типа нормализации по фпс) Если флаг "use animation rate as FPS" в рендере "Render_Animated_Sprites" установлен (имеет те же значения FPS - ?), партикл свяжет время жизни с анимацией правильно. (т.е., наверное нужно понимать, что в течение жизни частица проиграет кол-во кадров не большее, чем то, что уместится в этот интервал. Если мой надмозг фейлит - см. оригинал) Frames Per Second Устанавливает указанное число в качестве фпс анимации. Связывает время жизни и количество кадров в последовательности, получаемой партиклом через sequence_random или через другой инициализатор, определяющий последовательность. [b]Lifetime Random[/b] Устанавливает время жизни партикла из указанного диапазона. Lifetime_min Lifetime_max Min/max время жизни партикла в секундах. [b]Lifetime Pre-Age Noise[/b] Заставляет частицу прикидываться более старой. Все операторы, проверяющие время жизни с этим инициализатором работают коректно. start age minimum start age maximum Минимальный/максимальный возраст, добавляемый частице. time noise coordinate scale Установка временной шкалы функции шума (?) основанной на времени создания частицы. БОльшие числа будут возрастать случайно в большей степени, меньшие - почти не будут изменяться. (см. оригинал, я ничего не понял) spatial noise coordinate scale Устанавливает шкалу пространственной части функции шума, основанной на месте создания частицы. Промежутки возрастания/убывания - см. выше. Шум, основанный на времени появления партикла складывается с пространственным шумом, поэтому чтобы избавиться от эффекта соответствующего параметра нужно занулить time noise/этот_параметр/spatial_noise. (прим. над. они бы написали формулу, что ли, перевод бы облегчился многократно :/) time coordinate offset Устанавливает сдвиг функции шума по времени. Смещает результат полученного времени на случайную (указанную) величину (см. оригинал) spatial coordinate offset Устанавливает пространственный сдвиг функции шума. Ведет себя аналогично. absolute value Включает значения от -1 до 1 в выхлоп функции шума. При использовании absolute value, выход функции может порождать случайные изменения направлений возле нуля. (в оригинале как-то мутно сказано: Using absolute value bool (0/1) , the output can have sudden shifts in direction as the number approaches zero and then bounces back into positives instead of going into negatives.) invert absolute value invert_absolute_value = 1 - absolute_value; Move Particles Between 2 Control Points Перемещает партиклы между двумя контрольными точками на скорости лежащей в диапазоне мин/макс. Может быть крайне полезно для лазеров/лучей, следов от выстрела из снайперки. end control point Точка, к которой движется партикл. start offset Смещение места запуска парктиклов относительно start_control_point end spread Разброс партиклов возле точки прибытия. maximum speed Максимальная скорость перемещения партикла к конечной контрольной точке. minimum speed Минимальная скорость перемещения партикла к конечной контрольной точке. [b]Position Modify Offset Random[/b] Перемещает начальную позицию партикла в мировом/локальном пространстве относительно точки излучения партиклов. Может быть использовано для выстраивания партиклов по линии во время использования "шарового излучателя" или для смещения позиции партикла относительно второй контрольной точки. offset min Минимальное смещение по XYZ offset max Максимальное смещение по XYZ Offset in local space Булево значение, определяет в каком пространстве выполнить смещение (1 - local). offset relative to radius Булево значение, смещение выполняется пропорционально радиусу партикла. Например, если смещение = "0 0 1" и два партикла имеют радиус 32 и 64, то они будут смещены на 32 и 64 юнита соответственно. control_point_number Контрольная точка, относительно которой произойдет смещение. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 5] Author : stridemann Date : 12-10-2010 15:17 Этот короткий тутор даст Вам понять как создавать партикл огня типа [url=http://developer.valvesoftware.com/w/images/7/7a/Fire_particle.jpg]вот такого[/url] Итак начнем. [b]Properties[/b] Создайте новую партикл систему и назовите её. Мы должны определится с главными свойтвами партикла. В главной таблице партиклов нажмите properties (свойства). Измените максимальное количество партиклов (max_particles) на 40. Теперь выберите material, нажмите ... и в браузере выберите текстуру. Для примера пусть будет particle\fire_particle_4\fire_particle_4.vmt Установим bounding_box_min на -512 -512 -512 и bounding_box_max на 512 512 512 Измените color на оранжевый. В этих настройках мы закончили. Переключаемся на рендеринг (табличка render ). [b]Renderer[/b] Всем партиклам нужна какая-то визуализация. Мы же это будем делать с помощью рендера render_animated_sprites. Внутри его измените значение animation_rate на 0.8999999762 и измените animation_fit_lifetime на 1. Рендер настроили. Теперь нажмите на таблице operator. [b]Оperator[/b] С помощью оператора мы заставим наши партиклы двигатся, ищезать и т. д. В табличке операторов добавьте movement_basic . Эта штукенция определяет базовые движения партикла. Измените gravity на 0 0 50 . Гравитация направляет огонь в нужную сторону. 0 0 50 направляет его вверх как в реальности. Если установить 0 0 -50 то огонь будет направлен вниз. ДАлее добавьте Oscillate_Vector . Этот оператор поможет создать "волновой еффект" (wavy fire effect). Этот эффект поможет придать реализма и живости огню, а не чтобы он стоял статичным и не двигался. Примерно вот такую функцию кол****ий мы будем использовать [url]http://developer.valvesoftware.com/w/images/d/d4/Sin_wave.jpg[/url] . В Oscillate_Vector возле oscillation rate min измените значение на -0.400000006 -0.400000006 0 и oscillation rate max на 0.400000006 0.400000006 0 . Измените oscillation frequency min на 0.5 0.5 1 , далее oscillation frequency max на 1 1 0 . С этим закончили. Добавим Lifespan Decay этот оператор поможет уничтожить (чтобы он плавно ищез) партикл после некоторого времени. давайте сделаем "затухания партикла" (альфы). Добавляем Alpha_Fade_In_Random в нем изменяем fade in time min на 0.3000000119 и fade in time max на 0.400000006 . Теперь добавим Alpha_Fade_Out_Random и измените в нем fade out time min на 0.349999994 и fade out time max на 0.5 С операторами закончили. [b]Инициализаторы.[/b] Добавим инициализатор для установки начального состояния партикла. Добавьте Radius Random и установите radius_min на 3 и radius_max на 10 . Это симитирует партикл с заданым радиусом. Если хотите больший огонь, то установите radius_max на 50. Далее добавьте Alpha Random, установите alpha_min на 120 и alpha_max на 200. Добавьте Rotation Random ничего не изменяя. Добавьте Position Within Sphere Random , установите distance_bias на 1 1 0 и speed_max на 10. Установите speed_in_local_coordinate_system_min и speed_in_local_coordinate_system_max на 0 0 5 . Это спавнит партикл в заданной сфере и с заданной скоростью. Добавьте Lifetime Random и измените lifetime_max на 1.25 и lifetime_min на 1 . Это установить в партикле время жизни партиклов рандомно в пределах этих цифр. Добавим Sequence Random и установите sequence_max и min на 2 Теперь добавляем osition Modify Offset Random и установим offset in local space 0/1 на 1 С инициализ. закончили. [b]Излучатели.[/b] Тепрь последнее действие это добавляем главную функцию, которая оживит наш огонь. Добавьте emit_continuously и теперь наш огонь зажжется в окне превью!) Измените emission_rate на 50. На этом всё. Спасибо за внимание :). Тутор написал быстро и без переводчика. Надеюсь всё понятно и правильно) PS. А почему слово к_о_л_е_б_а_н_и_я отметило как типа мат? PS. Ахаха. Токшо догнал. Внутри мат :D -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 6] Author : lilo.panic Date : 12-10-2010 16:56 [b]Разборка партикла "blood_zombie_split"[/b] Начем с "[b]Properties[/b]" Материал: "particle\antlion_goop3\antlion_goop3.vmt" Максимальное количество партиклов установлено на 16. Надо понимать, что это - 16_экземпляров_себя, а этот экземпляр_себя содержит еще тонну детей. Если я не прав - поправьте. [b]Рендеры[/b]: render_animated_sprites [b]Операторы[/b]: Alpha Fade and Decay Movement Basic: гравитация - 200. Драг = 0 У детей разная гравитация. Что происходит во время наследования? Rotation Spin Roll spin_rate_degrees: 12 - на этот угол будет поворачиваться частица Вопрос к спецам: как происходит наследование параметров? [b]Инициализаторы[/b]: Radius Random Тут радиус установлен от 16 до 24. Надо понимать, что дочерние сопли скейлятся пропорционально этому значению. Sequence Random Rotation Random Color Random Alpha Random Position Within Sphere Random Lifetime from sequence ФПС = 30 Rotation Yaw Flip Random [b]Эмиттеры[/b]: emit_instantaneously [b]Дочерние партиклы.[/b] Их цела туча: blood_impact_green_01_droplets blood_impact_green_01_chunk (4) blood_impact_green_01_droplets (2) blood_impact_green_01_chunk blood_impact_red_01_mist blood_impact_red_01_chunk blood_impact_red_01_smalldroplets blood_impact_green_01_chunk Для начала будем разбирать дочерние партиклы. ------------------------------ [b]blood_impact_green_01_droplets[/b] Выглядит как разлетающиеся в разные стороны зеленоватые [s]сопли[/s] капли. [b]Рендеры:[/b] render_animated_sprites Ничего примечательного в настройках. [b]Операторы:[/b] Movement Basic Гравитация установлена в "0 0 -500" - для того, чтобы разлетевшись в разные стороны капли начали падать вниз. Drag: 0.0099999998 В валв вики написано "Drag to apply to the velocity of the particle." Смысл того, что получается после перевода я не понимаю. Визуально, чем выше значение, тем быстрее "замирает" анимация разлета в разные стороны. Т.е. эффект похож на воздушный тормоз. Alpha Fade and Decay start_fade_in_time: 0 end_fade_in_time: 0.15 start_fade_out_time: 0 end_fade_out_time: 1 Партикл начинает появляться с рождения и до 15% жизни. Исчезает же он в течение всей жизни от 0% до 100%. (Любопытно то, что по этой логике он исчезает даже когда появляется :)) [b]Инициализаторы:[/b] Position Within Sphere Random speed_in_local_coordinate_system_max: 0 0 100 speed_in_local_coordinate_system_min: -300 0 60 speed_max: 200 speed_min: 100 distance_bias: 1 1 1 Разброс по осям. 1 1 0 будет создавать партиклы только в плоскости xy, в то время как 1 1 10 создаст сверху и снизу сферы примерно в 10 раз больше партиклов, чем по x && y. Sequence Random sequence_min = 4 sequence_max = 7 Это значит, что во время инициализации партиклу будет назначена случайным образом текстура из 4-7 кадров материала. Rotation Random rotation_offset_min = 0 rotation_offset_max = 360 Максимальный угол, на который повернется партикл = 360 градусам. Т.е. угол поворта партикла относительно нормального положения - случайная выборка между min/max; rotation_initial = 0 Я так понимаю, что конечный угол поворота частицы будет равен rotation_initial + rand(0,360) Color Random color1/color2 - зеленый/красный tint clamp min/max - черный/белый tint update movement threshold = 32 Я так понял, что обновляться "подсветка" партикла будет не ранее, чем он преодолеет расстояние в 32 юнита Alpha Random alpha_min = 200 alpha_max = 255 Прозрачность от 200 до 255. Т.е. капли будут почти непрозрачными. Radius Random radius_min: 0.25 radius_max: 1 Кстати, этот инициализатор делает бесполезной настройку радиуса в пропертис. Lifetime Random lifetime_min: 0.3 lifetime_max: 1 Поциент долго жить не станет. :) [b]Эмиттеры:[/b] emit_instantaneously num_to_emit = 50 maximum emission per frame = 100 ----------------- blood_impact_green_01_chunk - почти ничем не отличается от предыдущего, только его почти не видно. ----------------- blood_impact_red_01_mist - похоже на "дымку" из крови Материал - particle\blood_core.vmt В инициализаторах ничего интересного нет. В операторах - Radius Scale: radius_start_scale: 0 radius_end_scale: 2 scale_bias: 0.75 Оператор занимается масштабированием партикла [i]со временем[/i]. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 7] Author : manJak Date : 12-10-2010 17:42 > "Drag to apply to the velocity of the particle." Смысл того, что получается после перевода я не понимаю. "Трение, применяемое к скорости партикля") > во время инициализации партиклу будет назначена случайным образом текстура из 4-7 кадров материала. Ахтунг! Биомех! Не это ли ты искал?) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 8] Author : Teod Date : 12-10-2010 19:07 [QUOTE][i]Оригинальное сообщение от manJak [/i] [B]> "Drag to apply to the velocity of the particle." [/B][/QUOTE]Передвинуть, чтобы применить к скорости патрикля. Мимопроходил. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 9] Author : manJak Date : 12-10-2010 19:21 Ок.. Потащите для нанесения на скорость крупинки. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 10] Author : stridemann Date : 12-10-2010 22:06 Слушайте пацаны, мож как нить на ВДЦ запихнуть то что мы перевели? Мы ж типа перевели статейки и можно как нибудь добавить страницу рядом на русском языке. Будет типа [url]http://developer.valvesoftware.com/wiki/Particle_System_Overview:ru[/url] -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 11] Author : lilo.panic Date : 12-10-2010 23:48 Создаем дурацкое подобие какого-то взрыва, может быть слегка ядреного. Если кому не лень - допилите плс. Создадим новый pcf. Ядреный взрыв состоит из: 1. вспышка 2. волна (эдакий раскат) 3. гриб (столб+шляпа) 4. огонь 5. купол Опишу вкратце. 1. Вспышка - glow. текстура - "particle\particle_glow_05_add_15ob_noz.vmt". Скорости по нулям, с дикеями и альфой нужно немного поиграться. 2. Волна - текстура "particle\particle_smoke_dust.vmt". В инициализаторе distance_bias = "1 1 0" - чтобы распространялась волна в одной плоскости. 3. Шляпа гриба - это та же волна, только с другими значения увеличения радиуса и скорости перемещения + гравитация по-жирнее. Вертикальная "ножка" этого подосиновика отличается настройкой эмиттера, который генерит дым не весь сразу (emission per frame). Чтобы дым летел вертикально вверх в свойствах "Position within sphere" нужно установить distance bias absolute value = 0 0 1; distance bias = 0 0 1. Если забить на один из параметров, дым будет лететь в обе стороны. 4. Огонь - это Дым с другой текстурой и просто "шаровая вспышка". 5. купол - position within sphere: distance bias: 1 1 1 distance_bias_absoute_value: 0 0 1 (нам просто нужна половина купола) Все это засунуть в контейнер и перемешать. В общем, смотрите сырцы, если кому интересно :) п.с. надеюсь ничего кроме pcf не надо? )) [size=1][i]lilo.panic добавил [date]1286923825[/date]:[/i][/size] И да, проверить я это не могу, поскольку партиклы у меня с новой видяхой не отображаются в игре, и на старых настройках 15 фпс. Может венда нарывается на снос и/или криво встали дрова. [size=1][i]lilo.panic добавил [date]1286924210[/date]:[/i][/size] stridemann, по идее можно, только имхо нужно доделать перевод местами и облагородить его. Плюс ко всему я ни разу не трогал эдитор вики, поэтому.. ) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 12] Author : KYB Date : 13-10-2010 12:23 lilo.panic, отличная, информативная тема, достойная прикрепления. Держи в благодарность +5 :) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 13] Author : Kostega Date : 13-10-2010 14:50 lilo.panic, малаца. Размести перевод потом на валввики :) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 14] Author : stridemann Date : 13-10-2010 19:03 [quote]stridemann, по идее можно, только имхо нужно доделать перевод местами и облагородить его. Плюс ко всему я ни разу не трогал эдитор вики, поэтому.. )[/quote] >lilo.panic Ну я то нормально вроде бы перевел. (5-й пост в этой теме) Переводил это- [url]http://developer.valvesoftware.com/wiki/Creating_A_Fire_Particle[/url] -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 15] Author : lilo.panic Date : 13-10-2010 19:12 > Ну я то нормально вроде бы перевел. А к тебе я и не имею претензий) Кстати, пока я не переходил по ссылкам, думал что это твой тутор. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 16] Author : stridemann Date : 13-10-2010 20:20 >lilo.panic Ну я понял... Просто спрашивал что вы думаете о моем переводе... Я решился и сделал это: [url]http://developer.valvesoftware.com/wiki/Creating_A_Fire_Particle:ru[/url] :) Кривовато, но работает :D Первая моя статья на вики. Сильно не бейте.) lilo.panic, доделывай свой тутор и релизь на ВДЦ. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 17] Author : manJak Date : 15-10-2010 17:46 [quote]render_screen_velocity_rotate В валв-вики на этом месте ничего нет. Эксперименты ничего не дали.[/quote] Heureka! Если его использовать в тандеме с render_animated_sprites, то спрайты будут поворачиваться лицом по направлению движения (в экранном пространстве). -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 18] Author : red-bear Date : 18-10-2010 17:19 Так,так.Моя благодарность топикстартеру,давно хотел освоить партиклы,да не знал с чего начать. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 19] Author : ***(Mr Roma)*** Date : 15-10-2011 00:09 Может немного не в ту тему, но... Как заюзать партиклы из игр 2009 двигла в моде под 2007 двиглом? Те, что распаковал в мод нечитабельные, хотя в том же л4д, элиен сварм всё работает. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 20] Author : Frozen442 Date : 18-10-2011 09:53 Скорее всего, как обычно у вальв бывает, версия разная. Не знаю что с ними сделать, чтобы стали читаться на более ранней версии движка, но для примера модельки и текстуры переводили путём рекомпиляции.. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 21] Author : ***(Mr Roma)*** Date : 18-10-2011 14:40 Да это понятно, что новый формат :( Но что то я нигде инфы о перекомпиляции для старого движка не нашел. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 22] Author : Nergal Date : 03-07-2013 16:19 Совсем недавно я решил вплотную заняться изучением системы частиц, и как и большинство из вас не смог найти более-менее нормального учебника или справочного пособия по этому вопросу. На этом форуме нашёл некоторое количество полезной информации, и это побудило меня собрать как можно больше информации по системе частиц. В результате получился довольно объёмный документ. Большая часть информации в нём - вольный перевод статей с ВДЦ, дополненных информацией, полученной мною в ходе экспериментов с частицами в Particle Editor. Вот, собственно, сам документ [url]https://docs.google.com/file/d/0B9hGlhzWhxEtQ1BEdEdqeGRFR2c/edit?usp=sharing[/url] Просьба к людям знающим, если обнаружите ошибки, пожалуйста укажите на них, и я исправлю. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 23] Author : -NeXeR- Date : 03-07-2013 16:26 [b]Nergal[/b], солидно! Я как раз частицами занимаюсь, если что будет сообщить, сообщу) -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 24] Author : -NeXeR- Date : 07-07-2013 14:20 Вопрос про спец-шейдер "spritecard". "$minfadesize" и "$maxfadesize" вообще хоть где-то работают? Тестирую на source 2007 и 2013 - эффекта нет. Нужно что-то особенное шаманить с vmt или эти версии двига не поддерживают данные параметры? Так или иначе, об этом следовало бы упомянуть в... да везде=) [color=green]UPD.[/color] Кажется понял в чем проблема... таких параметров, по-моему, нет. [b]Но есть такие: "$startfadesize" и "$endfadesize"[/b]! И эти как раз работают в соотв. с описанием предыдущих 0_о ОМГ -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 25] Author : -NeXeR- Date : 09-07-2013 12:25 [quote]группа операторов alpha_fade, включают в себя функции оператора lifespan_decay. Таким образом, при использовании одного из операторов alpha_fade, нет необходимости добавлять lifespan_decay.[/quote] Однако, как показывает практика, lifespan_decay все равно может оказаться нужным для последующего появления новых частиц, даже при наличии Alpha Fade In (Out) Random. Выглядит это так: после стартовой инициализации рождаются первые частицы, они адекватно функционируют, но когда они исчезнут, без lifespan_decay, не возникают новые. В ряде случаев (дождь, пр.) это не приемлемо. Данный опыт проведен в сорс2013, почти уверен, что также дела обстоят в 2009 и 2007. За портал, сварм, ксс, иные сторонние сорс игры не ручаюсь. Нужно сказать, что такой эффект также может оказаться кстати (разовые явления, вроде пыли от удара в стену). -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 26] Author : Nergal Date : 10-07-2013 18:37 [QUOTE][i]Оригинальное сообщение от -NeXeR- [/i] [B]Вопрос про спец-шейдер "spritecard". "$minfadesize" и "$maxfadesize" вообще хоть где-то работают? Тестирую на source 2007 и 2013 - эффекта нет. ... Так или иначе, об этом следовало бы упомянуть в... да везде=) [color=green]UPD.[/color] Кажется понял в чем проблема... таких параметров, по-моему, нет. [b]Но есть такие: "$startfadesize" и "$endfadesize"[/b]! И эти как раз работают в соотв. с описанием предыдущих 0_о ОМГ [/B][/QUOTE] Благодарю. Исправил. В [url=https://developer.valvesoftware.com/wiki/SpriteCard]документации Valve[/url] упоминаются $minfadesize и $maxfadesize, но в vmt вместо них они сами везде используют $startfadesize и $endfadesize. Возможно, $minfadesize и $maxfadesize - это первоначальные названия, которые в последствии были заменены. [QUOTE][i]Оригинальное сообщение от -NeXeR- [/i] [B]Однако, как показывает практика, lifespan_decay все равно может оказаться нужным для последующего появления новых частиц, даже при наличии Alpha Fade In (Out) Random. Выглядит это так: после стартовой инициализации рождаются первые частицы, они адекватно функционируют, но когда они исчезнут, без lifespan_decay, не возникают новые. ...[/B][/QUOTE] Код оператора lifespan_decay включён только в оператор Alpha Fade and Decay. В Alpha Fade In (Out) Random его нет, и об этом говорится в описании только Alpha Fade Out Random!? Но ты прав, и есть некоторое разночтение (исправлено). В исходном материале: [QUOTE]...the alpha_fade operator is an early operator that also includes lifespan_decay... [/QUOTE] здесь упоминается протооператор alpha_fade, который впоследствии стал называться Alpha Fade and Decay. -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 27] Author : -NeXeR- Date : 12-07-2013 12:51 [quote]render_models (New with Source 2009) Renders 3D models instead of particles. Useful for effects such as chunks of debris, or gibs.[/quote] Куда это они именно в сорс2009 такое добавили, что я даже найти не могу это ни в ХЛ2, ни в сорс сдк базе 0_о -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 28] Author : Barnacle Date : 12-07-2013 13:46 Взрыв из метрокопов - прикольное зрелище, наверное. :D -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- [Post 29] Author : -NeXeR- Date : 12-07-2013 16:02 Barnacle :D Еще странное дело, при воспроизведении в игре демо партиклы не работают, если они уже работали в момент старта записи этой демо. Это такая "прекрасная" особенность? -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- The messages has been download from Форумы на Наша-Life at https://bbs.hl-inside.ru at 30.04.2024 08:45:42