1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

о Loader и программистах

Тема в разделе "Eyeon Fusion & Generation", создана пользователем -, 8 янв 2007.

Модераторы: Григорий Чаленко
  1. Guest

    Ни как не могу установить значения TrimIn и TrimOut в Loader при помощи скрипта.

    comp = Fusion():GetCurrentComp()
    ldTool = comp.myLoader
    tableTrimIn = {1}
    tableTrimOut = {10}
    ldTool:SetAttrs({TOOLIT_Clip_TrimIn=tableTrimIn, TOOLIT_Clip_TrimOut=tableTrimOut})

    юзаю Fusion 5.1 beta 1 build 25
    Ошибок не дает, но значения не меняет.

    Хотел жизнь упростить. Нарезать из авишника и обработать много частей с одним Loader'ом.
    Вроде проста идея: список соответствия - фреймы -> часть авишника. А третий вечер уже потратил впустую
    Хотя нет! Натестил что print(string.len("фузион")) в ToolScript выдает 12, а в командной строке консоли 6!
    Либо программерам не платят вовсе и они генерируют код рандомом,
    Либо вся команда во главе с главным программистом, тупы, что для одной функции пишут две реализации и обе глючные,
    либо все делают фрилансеры ... без согласования интерфейсов,
    либо Eyeon наплевать на нас.
    Но все равно я на нем останусь, все равно он лучше "Шейка"

    И вообще, когда программа глючная трудно понять я ошибаюсь или очередной прокол программистов.
    С уважением к тяжелой доле творческих людей. IgorOk!
     
  2. Guest

    В хелпе сказано, что не все атрибуты можно изменить скриптом. Проверка на изменяемость только тестом.
    IgorOk!
     
  3. slayerk

    slayerk Мастер

    С нами с:
    05.02.2007
    Сообщения:
    76
    Симпатии:
    0
    Баллы:
    155
    выкладываю тут "коллекцию" мною написанных(/модифицированных) скриптов. несколько как раз по затронутой теме. другие может еще кому пригодятся.

    есть еще три скриптика лежат на 3dcenter - правленные стандартные скрипты для импорта трекинга, подкоректированные для пятерки.
    http://3dcenter.ru/forum/index.php?showtopic=66613&st=15

    совет: скриптинг во фью довольно таки простая и понятная вешь (вопреки сложившемуся вокруг этого процесса мнения). можно освоить основные принципы за недельку, влегкую причем (по своему опыту).
    чтобы менять через скрипт какой-либо параметр тула или проверить его способность к изменениям у меня например есть следующий "трюк":
    беру и тыкаю ПКМ на любой параметр в той же тулзе и выбираю модификатор expression (не тот который в Modifiers->expression, а тот который сразу в контекстном меню) под данным параметром появляется окно с "+" и полемм ввода выражения.
    "+" тянешь ЛКМ на тот параметр который нужно менять через скрипт. в окне ввода выражения появляеся его название - которое собственно и необходимо для изменения этого параметра через скрипт.
    далее запоминаешь(/записываешь/копируешь) это название и убираешь созданный expression. щбратиться к этому параметру можно так:
    <имя_тула>.<скопированное/запомненое/записанное_название_параметра>

    для твоего случая:
    ldTool.ClipStartTime=1
    ldTool.ClipendTime=10
    (что-то навроде этого. пишу по памяти)

    в переменной comp всегда хранится активная композиция (первая строка лишняя)
    в переменной tool всегда хранится текущая активная тулза
     
  4. slayerk

    slayerk Мастер

    С нами с:
    05.02.2007
    Сообщения:
    76
    Симпатии:
    0
    Баллы:
    155
    никак не присоеденить файлы со скриптами?
     
  5. slayerk

    slayerk Мастер

    С нами с:
    05.02.2007
    Сообщения:
    76
    Симпатии:
    0
    Баллы:
    155
    http://rapidshare.com/files/15420506/scripts.rar.html
     
  6. Григорий Чаленко

    Григорий Чаленко Moderator Команда форума

    С нами с:
    23.04.2005
    Сообщения:
    1.997
    Симпатии:
    13
    Баллы:
    1.254
    А кто-нибудь пробовал адаптировать под пятерку скрипт "Check for Missing Frames" ?
     
  7. slayerk

    slayerk Мастер

    С нами с:
    05.02.2007
    Сообщения:
    76
    Симпатии:
    0
    Баллы:
    155
    у меня такого не наблюдается. что он делает? проверяет наличие файлов на диске? так не вопрос я думаю.
    у меня в выложенных скриптах есть скриптик который раскидывает сиквенцию на основе файла с ключевыми кадрами по папкам.
    причем папки тоже сам создает. при этом после того как раскидал создает композицию и все раскиданное в нее импортит причем выставляет все друг за другом на таймлайне. так что проверить наличие файлов на диске это по сути пустяк.
     
  8. Григорий Чаленко

    Григорий Чаленко Moderator Команда форума

    С нами с:
    23.04.2005
    Сообщения:
    1.997
    Симпатии:
    13
    Баллы:
    1.254
    Да, он проверяет все ли файлы секвенции имеют место быть, нет ли недостающих:
    Check_For_Missing_Frames.dfscript
    Весьма полезная штука при проверке сканов, при рендеринге 3Д кусками...
     
  9. slayerk

    slayerk Мастер

    С нами с:
    05.02.2007
    Сообщения:
    76
    Симпатии:
    0
    Баллы:
    155
    function isMissing(filename)
    if fileexists(filename) == true then return false
    else return true end
    end

    lds = GetToolList("Loader")

    print()
    print("Checking flow for missing frames.")
    print()

    for i, tool in lds do
    missing = {}

    frames = eyeon.LD_GetFrames(tool)

    for i, file in frames do
    --~ print(file)
    if isMissing(file) == true then
    table.insert(missing, file)
    end

    end

    if table.getn(missing) > 0 then
    print(tool:GetAttrs().TOOLS_Name.." : Missing Frames")
    print("-----------------------------------------------------")

    for i, v in missing do
    print(" "..v)
    end

    end
    end

    print()
    print("Done checking.")
    print()
     
  10. Григорий Чаленко

    Григорий Чаленко Moderator Команда форума

    С нами с:
    23.04.2005
    Сообщения:
    1.997
    Симпатии:
    13
    Баллы:
    1.254
    Круто!
    Спасибо!
    С меня "куперс" :)

    Можно добавить копирайты (Айзека и свой) и опубликовать здесь:
    http://vfxpedia.com/index.php?title=Useful_Scripts
    Композеры мира будут носить на руках :)
     
  11. slayerk

    slayerk Мастер

    С нами с:
    05.02.2007
    Сообщения:
    76
    Симпатии:
    0
    Баллы:
    155
    круто! может сразу денег спросить? :)
     
  12. Григорий Чаленко

    Григорий Чаленко Moderator Команда форума

    С нами с:
    23.04.2005
    Сообщения:
    1.997
    Симпатии:
    13
    Баллы:
    1.254
  13. slayerk

    slayerk Мастер

    С нами с:
    05.02.2007
    Сообщения:
    76
    Симпатии:
    0
    Баллы:
    155
    вот вдогонку скрипт который переподгружает требуемые лоадеры
    http://3dcenter.ru/forum/index.php?showtopic=69325
    (если в папке с секвенцией появились или исчезли какие-то файлы)
     
  14. slayerk

    slayerk Мастер

    С нами с:
    05.02.2007
    Сообщения:
    76
    Симпатии:
    0
    Баллы:
    155
    читал читал идея хороша. мне кажется реализация у ней достаточно геморная поэтому и не торопятся
     
  15. Григорий Чаленко

    Григорий Чаленко Moderator Команда форума

    С нами с:
    23.04.2005
    Сообщения:
    1.997
    Симпатии:
    13
    Баллы:
    1.254
    Да, полезная штука!
    Спасибо :)
     
  16. Григорий Чаленко

    Григорий Чаленко Moderator Команда форума

    С нами с:
    23.04.2005
    Сообщения:
    1.997
    Симпатии:
    13
    Баллы:
    1.254
    Можно предложить им реализацию за деньги, мотивируя тем, что это реальный кусок работы.
    А они просто будут включать скрипт/плагин в стандартный комплект поставки.
     
  17. slayerk

    slayerk Мастер

    С нами с:
    05.02.2007
    Сообщения:
    76
    Симпатии:
    0
    Баллы:
    155
    вот написал скрипт который работает так:
    выделяешь тулы вызываешь скрипт он находит общие у тулов параметры и предлагает их в Дропдаун листе. Выбираешь нужный параметр и чмыкаешь Set(Для коннекта еще не доделал) потом открывается окно для ввода значения туду вводишь значение и чмык ок.
    тестирован на Motion blur set to 1
    Код:
    function getInpNum(tl, name)
    	local num=0
    	for i=1, table.getn(tl:GetInputList()) do
    		if tl:GetInputList()[i]:GetAttrs().INPS_Name==name then
    			num=i
    		end
    	end
    	print("fucking is OK!")
    	return num
    end
    
    function getInpsNames(tbl)
    	local tmp={}
    	for i, j in tbl do
    		if j:GetAttrs().INPB_Passive == false then
    			table.insert(tmp, j:GetAttrs().INPS_Name)
    		end
    	end
    	return tmp
    end
    
    function getMin(tbl) 
    	
    	local minTl=0
    	local minInps=1000000
    	local numInps=0
    	
    	for i=1, table.getn(tbl) do
    		numInps=table.getn(tbl[i]:GetInputList())
    		if numInps<minInps then
    			minTl=i
    			minInps=numInps
    		end
    	end
    	return minTl
    end
    
    tools_s=comp:GetToolList(true)
    
    if  table.getn(tools_s)<2 then
    	return 0, "you must select more then one tool for sheet"
    end
    
    temp=tools_s
    dump(tools_s)
    print()
    t1=temp[getMin(temp)]
    table.remove(temp, getMin(temp))
    t2=temp[getMin(temp)]
    
    inps={}
    
    t2_inps=getInpsNames(t2:GetInputList())
    t1_inps=getInpsNames(t1:GetInputList())
    for i, f in t1_inps do
    	for j, k in t2_inps do
    		if f==k then
    			table.insert(inps, k)
    		end
    	end
    end
    
    
    for i, j in temp do
    	tmp={}
    	tmp_inps=getInpsNames(j:GetInputList())
    	for k, l in tmp_inps do
    		fl=false
    		for m, n in inps do
    			if (n==l) then 
    				fl=true 
    			end
    		end
    		if fl==true then
    			table.insert(tmp, l)
    		end		
    	end
    	inps=tmp
    end
    
    dump(inps)
    if table.getn(inps)==0 then
    	print("NO SHEET INPUTS")
    	return 0
    end
    
    query=AskUser("© 2007 SlayerK Script", {
    	{"list", Name="Parameter", "Dropdown", Options=inps},
    	{"set", Name="Set Value", "Checkbox", Default=false},
    	{"connect", Name="Connect To", "Checkbox", Default=false}
    })
    
    if (query.set==true) and (query.connect==true) then
    	print("YOU MUST CHOOSE ONE CHECKBOX")
    	return 0
    end
    
    if query.set then
    	property=inps[query.list+1]
    	val=AskUser("Enter Correct Value", {
    		{"Value", "Text", Name="New Value", Lines=7, Wrap=true}
    	})
    	
    	tools_s=comp:GetToolList(true)
    	for i, j in tools_s do
    		inpNumber=getInpNum(j, property)
    		
    		do_str=string.gsub(j:GetAttrs().TOOLS_Name, "%s", "") .. "." .. j:GetInputList()[inpNumber]:GetAttrs().INPS_ID
    		do_str=do_str .. "=" .. val.Value
    		print(do_str)
    		
    		dostring(do_str);
    	end
    end
    
     

    Вложения:

    • 189891.jpg
      189891.jpg
      Размер файла:
      66,5 КБ
      Просмотров:
      60
    • 189892.jpg
      189892.jpg
      Размер файла:
      31,3 КБ
      Просмотров:
      54
    • 189893.jpg
      189893.jpg
      Размер файла:
      55,5 КБ
      Просмотров:
      55
  18. slayerk

    slayerk Мастер

    С нами с:
    05.02.2007
    Сообщения:
    76
    Симпатии:
    0
    Баллы:
    155
    куда-то подевался ты у меня из аси.
    вот нечто похожее на то о чем говорили
     
  19. slayerk

    slayerk Мастер

    С нами с:
    05.02.2007
    Сообщения:
    76
    Симпатии:
    0
    Баллы:
    155
    +бонус картинка с общими атрибутами для FastNoise и Background. не без тонкостей там все, но пока времени нет.
     
  20. slayerk

    slayerk Мастер

    С нами с:
    05.02.2007
    Сообщения:
    76
    Симпатии:
    0
    Баллы:
    155
    вот она
     

    Вложения:

    • 189906.jpg
      189906.jpg
      Размер файла:
      43,2 КБ
      Просмотров:
      54
Модераторы: Григорий Чаленко

Поделиться этой страницей