
Новости • Форум • Помощь • Поиск • Участники • Календарь • База |
Гость ( Вход | Регистрация ) | Выслать повторно письмо для активации |
Страницы: (3) [1] 2 3 ( Перейти к первому непрочитанному сообщению ) | ![]() ![]() |
eistan Профиль Статус: леонардо Группа: Заслуженные артисты Рейтинг: 2 ![]() |
Господа, есть ли такой инструмент где то в недрах материал едитора чтоб подменил мне все фонги в сцене на архитектурный материал ? очень нужно!. так как переношу объекты из скетчапа, они имеют дофига материалов и все фонги! вручную канеш весело, но как то сроки сзади стоят и подпинывают..
|
eistan Профиль Статус: леонардо Группа: Заслуженные артисты Рейтинг: 2 ![]() |
вот что то нашел... тока в скриптах ниразу не работал в ксях! не знаю даже что с этим делать) и оно ли это вообще
http://xsisupport.wordpress.com/2010/02/16...he-render-tree/ |
Alexdashch Профиль Статус: слон Группа: Заслуженные артисты Рейтинг: 6 ![]() |
//Вот переделаный под твои задачи fong2Arhi
var debug = 0; // Class ID of the Blinn shader in XSI SetValue("preferences.scripting.cmdlog", false, null); // Get a collection of all Fong nodes var sProgID = "Softimage.material-phong.1.0" var oShaderDef = Application.GetShaderDef( sProgID ) ; var oFongCollection = oShaderDef.ShaderInstances ; if (debug) LogMessage( "Found " + oFongCollection.Count + " Fong shaders" ); // Loop over the Fong collection and replace all Blinn nodes with Phongs var s = new Date(); oEnum = new Enumerator( oFongCollection ) ; for (;!oEnum.atEnd();oEnum.moveNext() ) { var oFong = oEnum.item() ; // try catch will skip over any TransientObjectContainer.Fong shaders we find try { var oMaterial = oFong.Owners(0); } catch(e) { LogMessage( "Skipping " + oFong ); continue; } LogMessage( "Replacing " + oFong ); Fong2Arhi( oMaterial, oFong ); } var e = new Date(); LogMessage( "Finished replacing Blinn shaders. Elapsed time: " + (e-s)/1000 + "s" ); function Fong2Arhi( oMaterial, oFong ) { // Create a new Arhi node var oArhi = CreateShaderFromPreset("$XSI_DSPRESETS\\Shaders\\Material\\mental images\\mia_Material.Preset", oMaterial, null); // Get the node connections from the ConnectionStack // And then insert the Phong node var oDR = XSIUtils.DataRepository ; var strOpInfo = oDR.GetConnectionStackInfo( oFong ); var oTopNode = ParseXML( strOpInfo ) ; var oConnections = oTopNode.childNodes ; if ( oConnections.length == 0 ) { LogMessage( "Cannot replace the Fong node " + oFong + " .It has no connections." ); } else { for ( var i = 0 ; i < oConnections.length ; i++ ) { var oConnection = oConnections(i) ; strtype = SafeGetNodeValue( oConnection, "type", "Unknown" ) ; strobj = SafeGetNodeValue( oConnection, "object", "Not Connected" ) ; localparam = SafeGetNodeValue( oConnection, "localparameter", " " ) ; destparam = SafeGetNodeValue( oConnection, "remoteparameter", " " ) ; if ( strtype == "in" ) { var oParam = oArhi.Parameters( localparam ); if ( oParam == null ) { LogMessage( "Cannot connect " + strobj + " to Arhi." + localparam + ". That parameter does not exist.", siWarning ); } else { //SIConnectShaderToCnxPoint("Sources.Materials.Proteus_Body_MatLib_Proteus.MAT_Brass11.Image5", oArhi + ".ambient", false); SIConnectShaderToCnxPoint( strobj, oParam ); if( debug ) LogMessage( "IN: " + strobj + ", " + oParam ); } } if ( strtype == "out" ) { var oTarget = Dictionary.GetObject( strobj ); var oParam = oTarget.Parameters( destparam ); //SIConnectShaderToCnxPoint("Sources.Materials.Proteus_Body_MatLib_Proteus.MAT_Brass11.Phong1", "Sources.Materials.Proteus_Body_MatLib_Proteus.MAT_Brass11.Mix_2colors.base_color", false); SIConnectShaderToCnxPoint( oArhi, oParam ); if( debug ) LogMessage( "OUT: " + oArhi + ", " + oParam ); } } } } //---------------------------------------- // Helpers //---------------------------------------- // Helper function to load the XML data using the Microsoft // implementation of the DOM (see msdn.microsoft.com for documentation) function ParseXML( strXML ) { var oXMLParser = new ActiveXObject("Microsoft.XMLDOM") oXMLParser.async = false oXMLParser.loadXML( strXML ) ; if (oXMLParser.parseError.errorCode != 0) { logmessage( "Invalid XML " + oXMLParser.parseError.reason , siError ) ; return null ; } // the xsi_file node // If this is NULL we must have failed to load the XML var oTopNode = oXMLParser.documentElement ; return oTopNode ; } // SafeGetNodeValue // // in_parentnode - XML DOM node // in_nodename - name of a nested node to query // in_default - value to return if nested node not found // // Example: If in_parent node points to this XML: <item><info>4</info><other></other></item> // then SafeGetNodeValue( node, "info", 0 ) ; returns "4". // and SafeGetNodeValue( node, "bogus", "not found" ) ; returns "not found". function SafeGetNodeValue( in_parentnode, in_nodename, in_default ) { strInfo = in_default ; try { oNode = in_parentnode.selectSingleNode( in_nodename ) ; if ( oNode != null ) { // Note: the property name is case sensitive, "Text" does not work strInfo = oNode.text ; } } catch( e ) { } return strInfo ; } |
eistan Профиль Статус: леонардо Группа: Заслуженные артисты Рейтинг: 2 ![]() |
Alexdashch
ругается на var oTarget = Dictionary.GetObject( strobj ); кинул в скрипт едитор, выбрал яву, правильно ? |
mindFreeArtist Профиль Статус: слон Группа: Артисты Рейтинг: 8 ![]() |
MM_ShaderTools
как раз для таких целей |
Alexdashch Профиль Статус: слон Группа: Заслуженные артисты Рейтинг: 6 ![]() |
Правильно... у меня не ругалось... попробуй совет от mindFreeArtist
|
eistan Профиль Статус: леонардо Группа: Заслуженные артисты Рейтинг: 2 ![]() |
mindFreeArtist
О даа! это оно! Спасибо тебе огромнейшее :preved: тока теперь надо почитать хелп и разобраться где брать ProgID каждого материала... как он пишет надо нажать ктрл+шифт+4, далее найти свой шейдер, и ткнуть на обджект детаил и там будет progID, все глаза намозолил не вижу там этого progID ( Оп.. он не понадобился, понимает обычные имена шейдеров :) |
eistan Профиль Статус: леонардо Группа: Заслуженные артисты Рейтинг: 2 ![]() |
Ан нет, softmaterial не принял... этот материал создается когда в кси формате перекидываешь из скетчапа, впервые такой вижу.. и его он не заменяет, выдаешь внизу ошибку Argument 0 (PresetObj) is invalid
|
Alexdashch Профиль Статус: слон Группа: Заслуженные артисты Рейтинг: 6 ![]() |
Хотелось бы пощупать сего монстра... Не может ведь ксишка оставить непонятный для себя материал... Скинь сценку с 1 обьектом с таким материалом
|
eistan Профиль Статус: леонардо Группа: Заслуженные артисты Рейтинг: 2 ![]() |
Alexdashch
http://www.sendspace.com/file/w065gc |
Alexdashch Профиль Статус: слон Группа: Заслуженные артисты Рейтинг: 6 ![]() |
Ну все понятно: Конвертор вставляет материалы softimage 3d, а не чистые фонги... поетому нужно в скрипте заменить вначале строки
// Get a collection of all Fong nodes var sProgID = "Softimage.material-phong.1.0" на // Get a collection of all Fong nodes var sProgID = "Softimage.soft_material.1.0" Сделало секунд за 20... |
Alexdashch Профиль Статус: слон Группа: Заслуженные артисты Рейтинг: 6 ![]() |
Вопрос в догонку: Из какой проги такой "удивительный" конвертор в Softimage 3d? Это чтобы знать наперед чего боятся...
|
eistan Профиль Статус: леонардо Группа: Заслуженные артисты Рейтинг: 2 ![]() |
Alexdashch
из проги SketchUP щас протестим скриптец |
eistan Профиль Статус: леонардо Группа: Заслуженные артисты Рейтинг: 2 ![]() |
сори за Некропост!
но тема актуальна, не заводится ни один скрипт и аддон из вышеперечисленных в 2013 версии кси, очень нужен! хелп ! ( |
Gescort Профиль Статус: слон Группа: Заслуженные артисты Рейтинг: 3 ![]() |
eistan
Можешь еще раз описать задачу, а то сверху много что написано, но лучше более конкретно знать что именно требуется, тогда и результат будет точнее. |
![]() |
![]() ![]() |