Render.ru

Зациклить супер-спрей.

#1
Надо, чтобы частички генерировались "по кругу", чтобы можно было без рывка зациклить, скажем, 100 кадров. Это возможно вообще или нет?
 
#2
Там же вродя есть продолжительность...
Нафига циклить то?
Поставь продолжительность на 100 кадров, укажи до куда спрею фонтанить ;)
Иль я че то не прально понял?
 
#3
Да не совсем. Мне надо, чтобы в этом сто первом кадре пузырьки (дым и т.п.) находились там же, где и в первом. Чтоб можно было по кругу их гонять. Для последующего импорта, к примеру.
 
#5
Cо скриптами вообще ни разу не общалась :). Даже не знаю, как это делается. Если объясните, буду очень благодарна.
 
#6
тоже была такая проблема, но с другим объектом... лечь, полежать на диване и подумать, мне помогло :)

решение: создать ДВА одинаковых источника (спрей, или еще чего) практически на одном месте, друг на друге вообщем... только в одном указать:
старт эмиттер: -100
енд этиттер: 0

а в другом:
старт эмиттер:0
енд эмиттер:100

это для анимации на 100 кадров... seed в обоих спреях должен быть одинаковый конечно...


Есть такой скрипт BPL_ParticleLooper.ms
а какой у него алгоритм действий? "скачать и посмотреть" не могу :(
 
#7
To Ivan: а не подскажешь, где этот скрипт достать. Или, если у тебя есть, скин на diman@bk.ru пожалуйста.
 
#8
/*
Particle Looper
Version 1.1
Written By: Jason Hayes (jhayes@ballisticpixel.com)
Date:02/12/2002
Developed for 3D Studio MAX 4.2
Description: Will loop supported particle systems. Please read the Help html file for usage.
The supported particles systems are:

- Super Spray
- Blizzard
- PArray
- PCloud

The advantage of using this over Peter Watje's "Particles +" plugin is that you can use
some of the default MAX particle systems in case you need to use instanced geometry.
What sucks is that it's a big cheese workaround, but it does the trick! :)

Version 1.0: Initial script.
Version 1.1: (Requested) Added the ability to choose a custom prefix for the looped particle systems.
*/


macroscript ParticleLooper
category:"BPL Tools"
buttonText:"ParticleLooper"
toolTip:"Particle Looper"
icon:#("ParticleLooper",1)
(

global base_system
global particle_sys01
global particle_sys02
global particle_sys03
global particle_sys04

if particle_looper != undefined then (closeRolloutFloater particle_looper)
particle_looper = newRolloutFloater "Particle Looper" 240 494

rollout support_ro "Supported Particle Systems"
(
label lb_Blizzard "Blizzard"
label lb_PArray "PArray"
label lb_PCloud "PCloud"
label lb_SuperSpray "Super Spray"
)

rollout pl_ro "Parameters"
(
pickbutton pick_particle_sys "Pick Base Particle System" width:200 height:30
label lb_base_system "none"
label space01 ""

group "Emitter Start / Stop Frame Range"
(
spinner sp_frame_range "Num Frames:" range:[-9999,9999,0] type:#integer width:105 align:#right
)

group "Custom Properties"
(
checkbox cb_wire_color "Consistent wire color"
checkbox cb_custom_prefix "Custom Prefix"
edittext et_prefix "Prefix:" text:"PL_" enabled:false
)

group "Looping"
(
button loop_system "Loop Particle System" width:190 height:30
button delete_looped_system "Delete Looped System" width:190 height:30 toolTip:"Will only delete systems with the prefix 'PL_'"
)



/* EVENTS */
on cb_custom_prefix changed state do
(
if state == true then (et_prefix.enabled = true) else (et_prefix.enabled = false)
)


on pick_particle_sys picked obj do
(
base_system = obj
lb_base_system.text = base_system.name

/* Get the num frames of the base systems emitter start / stop and put it into the slider */
base_system_start = base_system.emitter_start
base_system_stop = base_system.emitter_stop
num_frames = base_system_stop - base_system_start
sp_frame_range.value = num_frames
)


on loop_system pressed do
(
undo on
(
frame_range = sp_frame_range.value
wire_color = base_system.wireColor
prefix_name = et_prefix.text as string

/* Create the new particles */
particle_sys01 = base_system
particle_sys02 = copy particle_sys01
particle_sys03 = copy particle_sys02
particle_sys04 = copy particle_sys03

/* Rename the new particle systems to the prefix */
particle_sys02.name = (prefix_name + particle_sys02.name)
particle_sys03.name = (prefix_name + particle_sys03.name)
particle_sys04.name = (prefix_name + particle_sys04.name)

/* DEBUG */
format "SYS02 NAME=%\n" particle_sys02.name
format "SYS03 NAME=%\n" particle_sys03.name
format "SYS04 NAME=%\n" particle_sys04.name
/* DEBUG END */

/* Adjust the particles emitter start / stop for the loop */
sys01_start = particle_sys01.emitter_start
sys01_stop = particle_sys01.emitter_stop

particle_sys02.emitter_start = sys01_stop
particle_sys02.emitter_stop = sys01_stop + frame_range

particle_sys03.emitter_start = sys01_start - frame_range
particle_sys03.emitter_stop = sys01_start

particle_sys04.emitter_start = particle_sys03.emitter_start - frame_range
particle_sys04.emitter_stop = particle_sys03.emitter_start

/* If the user wants the wire color to be the same, do it here */
try
(
if cb_wire_color.state == true then
(
particle_sys02.wireColor = wire_color
particle_sys03.wireColor = wire_color
particle_sys04.wireColor = wire_color
)
)
catch()
)--end undo
)


on delete_looped_system pressed do
(
undo on
(
delete $'PL_*'
)
)

)--end rollout



rollout about_ro "About" rolledUp:true
(
label lb_1 "Particle Looper" align:#right
label lb_2 "Version 1.1" align:#right
label lb_3 "Written By Jason Hayes" align:#right
label lb_4 "jhayes@ballisticpixel.com" align:#right
button btn_help "Help" width:190

on btn_help pressed do
(
help_path = GetDir #help
help_file = (help_path + "\\ParticleLooper_Help.htm")
shellLaunch "N:\\Digital Juice\\MAXScripts\\Help\\ParticleLooper_Help.htm" ""
)
)


addRollout support_ro particle_looper
addRollout pl_ro particle_looper
addRollout about_ro particle_looper

)--end macroscript
 
Сверху