SoftimageRu Форум -> Find And Replace

Новости • Форум • Помощь • Поиск • Участники • Календарь • База


Страницы: (3) [1] 2 3   ( Перейти к первому непрочитанному сообщению ) Ответ в темуОтвет      Создание новой темыНовая тема   

> Find And Replace, есть ли такое?   
eistan
Профиль
Статус: леонардо
Группа: Заслуженные артисты
Рейтинг: 2
Господа, есть ли такой инструмент где то в недрах материал едитора чтоб подменил мне все фонги в сцене на архитектурный материал ? очень нужно!. так как переношу объекты из скетчапа, они имеют дофига материалов и все фонги! вручную канеш весело, но как то сроки сзади стоят и подпинывают..
Персональное сообщениеПисьмо на e-mail пользователюСайт пользователяICQAOLYahooMSN
Цитировать сообщение Дата 24.05.2012 - 06:28 Top
eistan
Профиль
Статус: леонардо
Группа: Заслуженные артисты
Рейтинг: 2
вот что то нашел... тока в скриптах ниразу не работал в ксях! не знаю даже что с этим делать) и оно ли это вообще
http://xsisupport.wordpress.com/2010/02/16...he-render-tree/
Персональное сообщениеПисьмо на e-mail пользователюСайт пользователяICQAOLYahooMSN
Цитировать сообщение Дата 24.05.2012 - 06:47 Top
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 ;
}

Персональное сообщениеПисьмо на e-mail пользователюYahoo
Цитировать сообщение Дата 24.05.2012 - 09:08 Top
eistan
Профиль
Статус: леонардо
Группа: Заслуженные артисты
Рейтинг: 2
Alexdashch
ругается на
var oTarget = Dictionary.GetObject( strobj );

кинул в скрипт едитор, выбрал яву, правильно ?
Персональное сообщениеПисьмо на e-mail пользователюСайт пользователяICQAOLYahooMSN
Цитировать сообщение Дата 24.05.2012 - 09:56 Top
mindFreeArtist
Профиль
Статус: слон
Группа: Артисты
Рейтинг: 8
MM_ShaderTools
как раз для таких целей
Персональное сообщениеПисьмо на e-mail пользователюСайт пользователя
Цитировать сообщение Дата 24.05.2012 - 11:39 Top
Alexdashch
Профиль
Статус: слон
Группа: Заслуженные артисты
Рейтинг: 6
Правильно... у меня не ругалось... попробуй совет от mindFreeArtist
Персональное сообщениеПисьмо на e-mail пользователюYahoo
Цитировать сообщение Дата 24.05.2012 - 12:56 Top
eistan
Профиль
Статус: леонардо
Группа: Заслуженные артисты
Рейтинг: 2
mindFreeArtist
О даа! это оно! Спасибо тебе огромнейшее :preved: тока теперь надо почитать хелп и разобраться где брать ProgID каждого материала... как он пишет надо нажать ктрл+шифт+4, далее найти свой шейдер, и ткнуть на обджект детаил и там будет progID, все глаза намозолил не вижу там этого progID (

Оп.. он не понадобился, понимает обычные имена шейдеров :)
Персональное сообщениеПисьмо на e-mail пользователюСайт пользователяICQAOLYahooMSN
Цитировать сообщение Дата 24.05.2012 - 13:10 Top
eistan
Профиль
Статус: леонардо
Группа: Заслуженные артисты
Рейтинг: 2
Ан нет, softmaterial не принял... этот материал создается когда в кси формате перекидываешь из скетчапа, впервые такой вижу.. и его он не заменяет, выдаешь внизу ошибку Argument 0 (PresetObj) is invalid
Персональное сообщениеПисьмо на e-mail пользователюСайт пользователяICQAOLYahooMSN
Цитировать сообщение Дата 24.05.2012 - 13:41 Top
Alexdashch
Профиль
Статус: слон
Группа: Заслуженные артисты
Рейтинг: 6
Хотелось бы пощупать сего монстра... Не может ведь ксишка оставить непонятный для себя материал... Скинь сценку с 1 обьектом с таким материалом
Персональное сообщениеПисьмо на e-mail пользователюYahoo
Цитировать сообщение Дата 24.05.2012 - 15:26 Top
eistan
Профиль
Статус: леонардо
Группа: Заслуженные артисты
Рейтинг: 2
Персональное сообщениеПисьмо на e-mail пользователюСайт пользователяICQAOLYahooMSN
Цитировать сообщение Дата 25.05.2012 - 06:00 Top
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...
Персональное сообщениеПисьмо на e-mail пользователюYahoo
Цитировать сообщение Дата 25.05.2012 - 11:38 Top
Alexdashch
Профиль
Статус: слон
Группа: Заслуженные артисты
Рейтинг: 6
Вопрос в догонку: Из какой проги такой "удивительный" конвертор в Softimage 3d? Это чтобы знать наперед чего боятся...
Персональное сообщениеПисьмо на e-mail пользователюYahoo
Цитировать сообщение Дата 25.05.2012 - 11:56 Top
eistan
Профиль
Статус: леонардо
Группа: Заслуженные артисты
Рейтинг: 2
Alexdashch
из проги SketchUP

щас протестим скриптец
Персональное сообщениеПисьмо на e-mail пользователюСайт пользователяICQAOLYahooMSN
Цитировать сообщение Дата 25.05.2012 - 11:58 Top
eistan
Профиль
Статус: леонардо
Группа: Заслуженные артисты
Рейтинг: 2
сори за Некропост!
но тема актуальна, не заводится ни один скрипт и аддон из вышеперечисленных в 2013 версии кси, очень нужен! хелп ! (
Персональное сообщениеПисьмо на e-mail пользователюСайт пользователяICQAOLYahooMSN
Цитировать сообщение Дата 13.01.2015 - 13:37 Top
Gescort
Профиль
Статус: слон
Группа: Заслуженные артисты
Рейтинг: 3
eistan
Можешь еще раз описать задачу, а то сверху много что написано, но лучше более конкретно знать что именно требуется, тогда и результат будет точнее.
Персональное сообщениеПисьмо на e-mail пользователю
Цитировать сообщение Дата 13.01.2015 - 14:13 Top
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Страницы: (3) [1] 2 3  Ответ в темуОтвет      Создание новой темыНовая тема   

 

Текстовая версия