SimplyMaya Forums

Welcome to the forum, feel free to ask questions here.


SM Forums / Maya Questions / Programming / Maya->Indigo0.5.3/0.5.4 Exporter Script

Programming MEL Scripts, Expressions & Programming Related Topics

Join the conversation. Reply to post
Page 1 of 13 1 2 3 11 Last »
 
Thread Tools
25-05-2006, 01:33 AM   #1
MattTheMan
Registered User
 
MattTheMan's Avatar
 
Join Date: Apr 2005
Location: Fairfield, CT
Posts: 2,436
Maya->Indigo0.5.3/0.5.4 Exporter Script
Well, people, I haven't programmed in a while. Now I want to make an MEL script that takes a Maya scene and makes an Indigo XML file.

So far- this is what my program outputs:

Code:
<?xml version='1.0' standalone=no>
<!--Exported from Maya-->

<scene>

<renderer_settings>
	<width>640</width>
	<height>480</height>
	<metropolis>true</metropolis>
	<large_mutation_prob>0.2</large_mutation_prob>
	<max_change>0.025</max_change>
	<russian_roulette_live_prob>0.7</russian_roulette_live_prob>
	<max_depth>1000</max_depth>
	<bidirectional>true</bidirectional>
	<strata_width>10</strata_width>
	<frame_upload_period>20</frame_uplod_period>
	<halt_time>-1</halt_time>
	<logging>true</logging>
	<image_save_period>30</image_save_period>
	<save_tonemapped_exr>false</save_tonemapped_exr>
	<save_untonemapped_exr>false</save_untonemapped_exr>
</renderer_settings>

	<tonemapping>		<reinhard>
			<pre_scale>2.0</pre_scale>
			<post_scale>1.0</post_scale>
		</reinhard>

		<colour_correction>1.0 1.0 1.0</colour_correction>
	</tonemapping>

<camera>
	<pos>2.852831591 -31.3782011 32.76079742</pos>
	<up>0 0 1</up>
	<forewards>-2.852831591 31.3782011 -27.63515811</forewards>
	<aperture_radius>
Yes, the numbers aren't just random outputs, they are actual processed positions. The camera target is a locator (with default name). The user can add an aim constraint to the camera from the locator if they want, it won't affect the script anyway.

Soon, I will have the vectors normalized, but, until then, this will have to do.

Also I'll have a window that prompts you, asks for settings, basically, a UI.
__________________
Live the life you love, love the life you live
  Reply with quote
25-05-2006, 01:51 AM   #2
MattTheMan
Registered User
 
MattTheMan's Avatar
 
Join Date: Apr 2005
Location: Fairfield, CT
Posts: 2,436
fast update- didn't know Maya had a target camera, so now you have to create a camera (camera 1, dont rename) and, instead of a locator, my script uses the camera target as the locator.

EDIT- Maya has just solved a big problem of mine- the up vector. Maya has a camera called Camera, aim, and up! I can use this to my advantage! :attn:

but you'lll have to use that kind of camera or else it won't export (the script won't run)
__________________
Live the life you love, love the life you live

Last edited by MattTheMan; 25-05-2006 at 01:53 AM.
  Reply with quote
25-05-2006, 08:41 AM   #3
Arangol
Registered User
 
Join Date: Apr 2006
Posts: 10
Hmm, I think you'we got the basics right but as I don't know anything/very little of the Indigo file format I can't give you much C&C.
Yay for 13 year old programmers
//lol
Arangol
  Reply with quote
25-05-2006, 11:17 AM   #4
MattTheMan
Registered User
 
MattTheMan's Avatar
 
Join Date: Apr 2005
Location: Fairfield, CT
Posts: 2,436
ya, yay lol :attn:

I will just post a sample XML file with 2 triangles in it and no light (exported from 3ds Max)

Code:
?xml version="1.0" standalone=no>
<!--Exported from 3ds Max-->

<scene>

<renderer_settings>
	<width>640</width>
	<height>480</height>
	<metropolis>true</metropolis>
	<large_mutation_prob>0.2</large_mutation_prob>
	<max_change>0.025</max_change>
	<russian_roulette_live_prob>0.7</russian_roulette_live_prob>
	<max_depth>1000</max_depth>
	<bidirectional>true</bidirectional>
	<strata_width>10</strata_width>
	<frame_upload_period>20</frame_upload_period>
	<halt_time>-1</halt_time>
	<logging>true</logging>
	<image_save_period>20</image_save_period>
	<save_tonemapped_exr>false</save_tonemapped_exr>
	<save_untonemapped_exr>false</save_untonemapped_exr>
</renderer_settings>

	<tonemapping>
		<reinhard>
			<pre_scale>2.0</pre_scale>
			<post_scale>1.0</post_scale>
		</reinhard>

		<colour_correction>1.0 1.0 1.0</colour_correction>
	</tonemapping>

	<camera>
		<pos>-1.05755 -0.00719424 0.0</pos>
		<up>0 0 1</up>
		<forwards>0.11223 0.0 0.0</forwards>
		<aperture_radius>0.003125</aperture_radius>
		<focus_distance>1.1223</focus_distance>
		<aspect_ratio>1.5</aspect_ratio>
		<sensor_width>0.036</sensor_width>
		<lens_sensor_dist>0.0523314</lens_sensor_dist>
		<white_balance>D65</white_balance>
	</camera>

	<include>
		<pathname>TESTmat.xml</pathname>
	</include>
		<!--object Plane02 -->
	<mesh>

		<name>Plane02</name>
	<embedded>
			<vertex pos="-26.489 -27.0168 26.9344" normal="0.0 0.0 1.0" uv0="0.0 0.0"/>
			<vertex pos="28.0727 -27.0168 26.9344" normal="0.0 0.0 1.0" uv0="1.0 0.0"/>
			<vertex pos="-26.489 27.5449 26.9344" normal="0.0 0.0 1.0" uv0="0.0 0.0"/>
			<vertex pos="28.0727 27.5449 26.9344" normal="0.0 0.0 1.0" uv0="1.0 0.0"/>
		<triangle_set>
			<material_name>Defaultmat</material_name>
			<tri>2 0 3</tri>
			<tri>1 3 0</tri>
		</triangle_set>
		</embedded>
	</mesh>
	<model>
		<pos>0 0 0</pos>
		<scale>0.01</scale>
		<normal_smoothing>true</normal_smoothing>
		<rotation>
			<matrix>
			1 0 0 0 1 0 0 0 1
			</matrix>
		</rotation>
		<mesh_name>Plane02</mesh_name>
	</model>
</scene>
__________________
Live the life you love, love the life you live
  Reply with quote
25-05-2006, 11:06 PM   #5
MattTheMan
Registered User
 
MattTheMan's Avatar
 
Join Date: Apr 2005
Location: Fairfield, CT
Posts: 2,436
well- I can get diffuse and phong materials exported.

Code:
<?xml version='1.0' standalone=no>
<!--Exported from Maya-->

<scene>

<renderer_settings>
	<width>640</width>
	<height>480</height>
	<metropolis>true</metropolis>
	<large_mutation_prob>0.2</large_mutation_prob>
	<max_change>0.025</max_change>
	<russian_roulette_live_prob>0.7</russian_roulette_live_prob>
	<max_depth>1000</max_depth>
	<bidirectional>true</bidirectional>
	<strata_width>10</strata_width>
	<frame_upload_period>20</frame_uplod_period>
	<halt_time>-1</halt_time>
	<logging>true</logging>
	<image_save_period>30</image_save_period>
	<save_tonemapped_exr>false</save_tonemapped_exr>
	<save_untonemapped_exr>false</save_untonemapped_exr>
</renderer_settings>

	<tonemapping>		<reinhard>
			<pre_scale>2.0</pre_scale>
			<post_scale>1.0</post_scale>
		</reinhard>

		<colour_correction>1.0 1.0 1.0</colour_correction>
	</tonemapping>

<camera>
	<pos>0 -5.06812214 4.74225765</pos>
	<up>0 0.5252816443 0.8509284307</up>
	<forewards>0 0.9012067486 -0.4333894279</forewards>
	<aperture_radius>0.03125</aperture_radius>
	<focus_distance>5.816917335</focus_distance>
	<aspect_ratio>1.333330035</asect_ratio>
	<sensor_width>0.036</sensor_width>
	<lens_sensor_dist>0.0523314</lens_sensor_dist>
	<white_balance>D65</white_balance>
</camera>

	<!--Materials--!>
	<!--Credits partially to LaLiLuLeLo, also with the models!!!--!>
<material>
	<name>lambert1</name>
	<diffuse>
		</colour>0.5 0.5 0.5</colour>
	</diffuse>
</material>

<material>
	<phong>
		<name>phong1</name>
		<diffuse>0 0.5 0.1034166962</diffuse>
		<specular>0.55400002 0.04321199656 0</specular>
		<exponent>120</exponent>
	</phong>
</material>
	<!--Actual Model Starts Here. --!>
That was exported with my script!!!!

I won't post code because I really don't want to be plaigerized, since my exporter is the only one around for Maya! (apart from LaLiLuLeLo from the flipcode forums, and his doens't work with Indigo 0.5)

Mine doesn't either but it will in an hour or two.

Later,
Matt
__________________
Live the life you love, love the life you live
  Reply with quote
26-05-2006, 01:57 PM   #6
arneoog
Registered User
 
arneoog's Avatar
 
Join Date: Mar 2006
Location: Norway
Posts: 189
Hurry, hurry!
I want to render my own modells :attn:
__________________
Arne OOG - Makin' stuff
>>elqx Studios<<
  Reply with quote
26-05-2006, 04:02 PM   #7
MattTheMan
Registered User
 
MattTheMan's Avatar
 
Join Date: Apr 2005
Location: Fairfield, CT
Posts: 2,436
ok ok!

I can export a full file now- plese try it out.. it doesn't work on my comp, no clue as to why the f**** it doesnt work. It tells me it can't read line -2.233.

no meshlights or any kind of light for that matter, use it the same way you used LaLiLuLeLo's script, but:

Lambert materials are plain diffuse

Phong materials-

Color is actual color

Reflectivity is specular color

If you want a non-constant specular color (eg 1 0 1 instead of 1 1 1) you need to set reflectivity to 0 and use the reflected color gauge

Cosine power is specular sharpness (warning- it is multiplied by 10- eg. 12 is 120 and 0.3 is 3)

you need to use a camera- camera, aim, and up. Don't rename it.
Code:
//Script by Matt B. (ThatDude33) for export from Maya 6.5+ to Indigo 0.5.3
//Outputs in script window
//Copy-Paste results into XML file, run using Ini File.
//No edits should be neccesary

//Start Writing:
string $write = "<?xml version='1.0' standalone=no>\n";
$write += "<!--Exported from Maya-->\n\n";

proc vector normalize(vector $v){
float $len = sqrt($v.x*$v.x+$v.y*$v.y+$v.z*$v.z);
vector $n = <<$v.x/$len, $v.y/$len, $v.z/$len>>;
return $n;
}
//Will have a prompt window, but now uses settings from render globals
$write +="<scene>\n";
$write += "\n<renderer_settings>\n";
$write += "\t<width>" + `getAttr defaultResolution.width` +"</width>\n";
$write += "\t<height>" + `getAttr defaultResolution.height` +"</height>\n";
$write += "\t<metropolis>true</metropolis>\n";
$write += "\t<large_mutation_prob>0.2</large_mutation_prob>\n";
$write += "\t<max_change>0.025</max_change>\n";
$write += "\t<russian_roulette_live_prob>0.7</russian_roulette_live_prob>\n";
$write += "\t<max_depth>1000</max_depth>\n";
$write += "\t<bidirectional>true</bidirectional>\n";
$write += "\t<strata_width>10</strata_width>\n";
$write += "\t<frame_upload_period>20</frame_upload_period>\n";
$write += "\t<halt_time>-1</halt_time>\n";
$write += "\t<logging>true</logging>\n";
$write += "\t<image_save_period>30</image_save_period>\n";
$write += "\t<save_tonemapped_exr>false</save_tonemapped_exr>\n";
$write += "\t<save_untonemapped_exr>false</save_untonemapped_exr>\n";
$write += "</renderer_settings>\n\n";
$write += "\t<tonemapping>\n";
$write += "\t\t<reinhard>\n";
$write += "\t\t\t<pre_scale>2.0</pre_scale>\n";
$write += "\t\t\t<post_scale>1.0</post_scale>\n";
$write += "\t\t</reinhard>\n";
$write += "\n\t\t<colour_correction>1.0 1.0 1.0</colour_correction>\n";
$write += "\t</tonemapping>\n";
$write += "<background>\n<radiance>1 1 1</radiance>\n</background>\n\n";
$write += "\n<camera>\n";
float $px = `getAttr camera1.tx`;
float $py = `getAttr camera1.ty`;
float $pz = `getAttr camera1.tz`;
vector $pos = <<$px, $py, $pz>>;
float $tx = `getAttr camera1_aim.tx`;
float $ty = `getAttr camera1_aim.ty`;
float $tz = `getAttr camera1_aim.tz`;
vector $rel="nofollow" target= <<$tx, $ty, $tz>>;
vector $front = $target-$pos;
vector $dist = $front;
$front = normalize($front);
$write += "\t<pos>"+$px+" "+$py+" "+$pz+"</pos>\n";
float $ux = `getAttr camera1_up.tx`;
float $uy = `getAttr camera1_up.ty`;
float $uz = `getAttr camera1_up.tz`;
vector $up = <<$ux, $uy, $uz>>;
$up = $up - $pos;
$up = normalize($up);
$write += "\t<up>"+$up.x+" "+$up.y+" "+$up.z+"</up>\n";
$write += "\t<forewards>"+$front.x+" "+$front.y+" "+$front.z+"</forewards>\n";
float $fstop = 8;
if ($fstop < 1.0){
$fstop = 1.0;
}
if ($fstop > 22){
$fstop = 22;
}
float $aprad = 50/$fstop;
$aprad = $aprad/200;
$write += "\t<aperture_radius>"+$aprad+"</aperture_radius>\n";
float $FD = sqrt($dist.x*$dist.x+$dist.y*$dist.y+$dist.z*$dist.z);
$write += "\t<focus_distance>"+$FD+"</focus_distance>\n";
$write += "\t<aspect_ratio>"+`getAttr defaultResolution.deviceAspectRatio`+"</aspect_ratio>\n";
$write += "\t<sensor_width>0.036</sensor_width>\n";
$write += "\t<lens_sensor_dist>0.0523314</lens_sensor_dist>\n";
$write += "\t<white_balance>D65</white_balance>\n";
$write += "</camera>\n\n";
$write += "\t<!--Materials--!>\n";
$write += "\t<!--Some Credit to LaLiLuLeLo--!>";
string $mats[] = `ls -mat`;
for ($one in $mats){
	if (`objectType $one` == "lambert"){
		$write+= "\n<material>\n";
		$write += "\t<name>"+$one+"</name>\n";
		$write += "\t<diffuse>\n";
		float $color[] = `getAttr ($one + ".color")`;
		$write+="\t\t</colour>"+$color[0]+" "+$color[1]+" "+$color[2]+"</colour>\n";
		$write += "\t</diffuse>\n";
		$write += "</material>\n";
	}
	if (`objectType $one` == "phong"){
		$write += "\n<material>\n";
		$write += "\t<phong>\n";		
		$write += "\t\t<name>"+$one+"</name>\n";
		float $col[] = `getAttr ($one + ".color")`;
		$write += "\t\t<diffuse>"+$col[0]+" "+$col[1]+" "+$col[2]+"</diffuse>\n";
		float $reflectivity = `getAttr($one +".reflectivity")`;
		if ($reflectivity > 0.0){
			$write += "\t\t<specular>"+$reflectivity+" "+$reflectivity+" "+$reflectivity+"</specular>\n";
		}
		if ($reflectivity == 0.0){
			float $refl[] = `getAttr ($one +".reflectedColor")`;
			$write += "\t\t<specular>"+$refl[0]+" "+$refl[1]+" "+$refl[2]+"</specular>\n";
		}		
		float $exp = `getAttr ($one + ".cosinePower")`;
		float $exp = $exp * 10;
		$write += "\t\t<exponent>"+$exp+"</exponent>\n";
		$write += "\t</phong>\n";
		$write += "</material>\n";
	}
}
$write += "\t<!--Actual Model Starts Here. --!>\n";
string $shapes[] = `ls -s`;
for ($one in $shapes){
	if(`objectType $one` == "mesh"){
	int $nV[] = `polyEvaluate -v $one`;
	int $nF[] = `polyEvaluate -f $one`;
	int $x = 0;
	$write += "\n<mesh>\n";
	$write += "\t<name>"+$one+"</name>\n";
	$write += "\t<embedded>\n";
	for($x=0;$x < $nV[0];$x++){
		string $cv = $one+".vtx["+$x+"]";
		float $pos[] = `pointPosition $cv`;
		$write += "\t\t<vertex pos='"+$pos[0]+" "+$pos[1]+" "+$pos[2]+"'";
		float $normal[] = `polyNormalPerVertex -q -xyz $cv`;
		$write += " normal='"+$normal[0]+" "+$normal[1]+" "+$normal[2]+"'";
		string $uv[] = `polyListComponentConversion -fv -tuv $cv`;
		float $uvcoord[] = `polyEditUV -q $uv`;
		$write += " uv0='"+$uvcoord[0]+" "+$uvcoord[1]+"'/>\n";
		}
	$write += "\t</embedded>\n";	
	$write += "\t<triangle_set>\n";
	string $sg[] = `listConnections -type shadingEngine $one`;
	string $mat[] = `listConnections $sg[0]`;
	//$mat[2] holds the actual material.
	$write += "\t<material_name>"+$mat[2]+"</material_name>\n";
	for($x = 0;$x < $nF[0];$x++){
		string $curface = $one +".f["+$x+"]";
		string $vfl[] = `polyListComponentConversion -ff -tvf $curface`;
		$vfl = `filterExpand -sm 70 $vfl`;
		$write +="\t\t<tri>";
		for ($v in $vfl){
			string $vert[]=`polyListComponentConversion -fvf -tv $v`;
			string $vnum = match("[0-9]+",match("[0-9]+\]",$vert[0]));
			int $conv = $vnum;
			$write += $conv + " ";
		}
		$write += "</tri>\n";
	}	
	$write += "\t</triangle_set>\n";
	$write += "\t</embedded>\n";
	$write += "</mesh>";
	}
}

//Models
string $trans[] =`ls -s`;
for ($one in $trans) {
			string $shape[] = `listRelatives -shapes $one`;
			if (`objectType $one` == "mesh"){
			$write += "\n\n<model>\n\t<pos>0 0 0</pos>";
		$write += "\n\t<scale>1</scale>";
		$write += "\n\t<rotation><matrix>1 0 0 0 1 0 0 0 1</matrix></rotation>";
		$write += "\n\t<mesh_name>"+$one +"</mesh_name>\n</model>";
	}
}
$write += "\n</scene>";
print($write);
if (`window -exists indOut`) deleteUI indOut;
window -title "Output for Indigo Renderer" indOut;
windowPref -wh 500 600 indOut;
rowLayout -h 600;
scrollField -w 480 -h 560 -editable false -tx $write;
showWindow indOut;
__________________
Live the life you love, love the life you live
  Reply with quote
26-05-2006, 04:16 PM   #8
arneoog
Registered User
 
arneoog's Avatar
 
Join Date: Mar 2006
Location: Norway
Posts: 189

Can't get Indigo to read it...
SceneLoaderExept: Failed to load XML doc from path 'testscenes/mayatest1100.xml': Error reading Element value. Line 0, column 0

Strange...
__________________
Arne OOG - Makin' stuff
>>elqx Studios<<
  Reply with quote
26-05-2006, 04:20 PM   #9
MattTheMan
Registered User
 
MattTheMan's Avatar
 
Join Date: Apr 2005
Location: Fairfield, CT
Posts: 2,436
yeah- same here.

Odd indeed... and I wonder why! I mean, my 3ds Max files are just fine. I'll try to export an identical 3ds Max file and see what's up.
__________________
Live the life you love, love the life you live
  Reply with quote
26-05-2006, 04:44 PM   #10
MattTheMan
Registered User
 
MattTheMan's Avatar
 
Join Date: Apr 2005
Location: Fairfield, CT
Posts: 2,436
an identical 3ds exported file runs just fine.

I talked to nick (writer of Indigo) and he said he'd tell me what it is, if it's not because it can't find the file, which i'm sure it can.

This is making me maaaaaaaaad. I really want to solve this problem!!!1
__________________
Live the life you love, love the life you live
  Reply with quote
26-05-2006, 06:36 PM   #11
arneoog
Registered User
 
arneoog's Avatar
 
Join Date: Mar 2006
Location: Norway
Posts: 189
YESS!!!!!!!!!!!!!!!!!!!!!! :attn:
I fixed it

There was some stupid mistakes there...

Code:
//Script by Matt B. (ThatDude33) for export from Maya 6.5+ to Indigo 0.5.3
//Fixed by Arne OOG
//Outputs in script window
//Copy-Paste results into XML file, run using Ini File.
//No edits should be neccesary

//Start Writing:
string $write = "<?xml version='1.0' standalone=no>\n";
$write += "<!--Exported from Maya-->\n\n";

proc vector normalize(vector $v){
float $len = sqrt($v.x*$v.x+$v.y*$v.y+$v.z*$v.z);
vector $n = <<$v.x/$len, $v.y/$len, $v.z/$len>>;
return $n;
}
//Will have a prompt window, but now uses settings from render globals
$write +="<scene>\n";
$write += "\n<renderer_settings>\n";
$write += "\t<width>" + `getAttr defaultResolution.width` +"</width>\n";
$write += "\t<height>" + `getAttr defaultResolution.height` +"</height>\n";
$write += "\t<metropolis>true</metropolis>\n";
$write += "\t<large_mutation_prob>0.2</large_mutation_prob>\n";
$write += "\t<max_change>0.025</max_change>\n";
$write += "\t<russian_roulette_live_prob>0.7</russian_roulette_live_prob>\n";
$write += "\t<max_depth>1000</max_depth>\n";
$write += "\t<bidirectional>true</bidirectional>\n";
$write += "\t<strata_width>10</strata_width>\n";
$write += "\t<frame_upload_period>20</frame_upload_period>\n";
$write += "\t<halt_time>-1</halt_time>\n";
$write += "\t<logging>true</logging>\n";
$write += "\t<image_save_period>30</image_save_period>\n";
$write += "\t<save_tonemapped_exr>false</save_tonemapped_exr>\n";
$write += "\t<save_untonemapped_exr>false</save_untonemapped_exr>\n";
$write += "</renderer_settings>\n\n";
$write += "\t<tonemapping>\n";
$write += "\t\t<reinhard>\n";
$write += "\t\t\t<pre_scale>2.0</pre_scale>\n";
$write += "\t\t\t<post_scale>1.0</post_scale>\n";
$write += "\t\t</reinhard>\n";
$write += "\n\t\t<colour_correction>1.0 1.0 1.0</colour_correction>\n";
$write += "\t</tonemapping>\n";
$write += "<background>\n<radiance>1 1 1</radiance>\n</background>\n\n";
$write += "\n<camera>\n";
float $px = `getAttr camera1.tx`;
float $py = `getAttr camera1.ty`;
float $pz = `getAttr camera1.tz`;
vector $pos = <<$px, $py, $pz>>;
float $tx = `getAttr camera1_aim.tx`;
float $ty = `getAttr camera1_aim.ty`;
float $tz = `getAttr camera1_aim.tz`;
vector $rel="nofollow" target= <<$tx, $ty, $tz>>;
vector $front = $target-$pos;
vector $dist = $front;
$front = normalize($front);
$write += "\t<pos>"+$px+" "+$py+" "+$pz+"</pos>\n";
float $ux = `getAttr camera1_up.tx`;
float $uy = `getAttr camera1_up.ty`;
float $uz = `getAttr camera1_up.tz`;
vector $up = <<$ux, $uy, $uz>>;
$up = $up - $pos;
$up = normalize($up);
$write += "\t<up>"+$up.x+" "+$up.y+" "+$up.z+"</up>\n";
$write += "\t<forwards>"+$front.x+" "+$front.y+" "+$front.z+"</forwards>\n";
float $fstop = 8;
if ($fstop < 1.0){
$fstop = 1.0;
}
if ($fstop > 22){
$fstop = 22;
}
float $aprad = 50/$fstop;
$aprad = $aprad/200;
$write += "\t<aperture_radius>"+$aprad+"</aperture_radius>\n";
float $FD = sqrt($dist.x*$dist.x+$dist.y*$dist.y+$dist.z*$dist.z);
$write += "\t<focus_distance>"+$FD+"</focus_distance>\n";
$write += "\t<aspect_ratio>"+`getAttr defaultResolution.deviceAspectRatio`+"</aspect_ratio>\n";
$write += "\t<sensor_width>0.036</sensor_width>\n";
$write += "\t<lens_sensor_dist>0.0523314</lens_sensor_dist>\n";
$write += "\t<white_balance>D65</white_balance>\n";
$write += "</camera>\n\n";

string $mats[] = `ls -mat`;
for ($one in $mats){
	if (`objectType $one` == "lambert"){
		$write+= "\n<material>\n";
		$write += "\t<name>"+$one+"</name>\n";
		$write += "\t<diffuse>\n";
		float $color[] = `getAttr ($one + ".color")`;
		$write+="\t\t<colour>"+$color[0]+" "+$color[1]+" "+$color[2]+"</colour>\n";
		$write += "\t</diffuse>\n";
		$write += "</material>\n";
	}
	if (`objectType $one` == "phong"){
		$write += "\n<material>\n";
		$write += "\t<phong>\n";		
		$write += "\t\t<name>"+$one+"</name>\n";
		float $col[] = `getAttr ($one + ".color")`;
		$write += "\t\t<diffuse>"+$col[0]+" "+$col[1]+" "+$col[2]+"</diffuse>\n";
		float $reflectivity = `getAttr($one +".reflectivity")`;
		if ($reflectivity > 0.0){
			$write += "\t\t<specular>"+$reflectivity+" "+$reflectivity+" "+$reflectivity+"</specular>\n";
		}
		if ($reflectivity == 0.0){
			float $refl[] = `getAttr ($one +".reflectedColor")`;
			$write += "\t\t<specular>"+$refl[0]+" "+$refl[1]+" "+$refl[2]+"</specular>\n";
		}		
		float $exp = `getAttr ($one + ".cosinePower")`;
		float $exp = $exp * 10;
		$write += "\t\t<exponent>"+$exp+"</exponent>\n";
		$write += "\t</phong>\n";
		$write += "</material>\n";
	}
}

string $shapes[] = `ls -s`;
for ($one in $shapes){
	if(`objectType $one` == "mesh"){
	int $nV[] = `polyEvaluate -v $one`;
	int $nF[] = `polyEvaluate -f $one`;
	int $x = 0;
	$write += "\n<mesh>\n";
	$write += "\t<name>"+$one+"</name>\n";
	$write += "\t<embedded>\n";
	for($x=0;$x < $nV[0];$x++){
		string $cv = $one+".vtx["+$x+"]";
		float $pos[] = `pointPosition $cv`;
		$write += "\t\t<vertex pos='"+$pos[0]+" "+$pos[1]+" "+$pos[2]+"'";
		float $normal[] = `polyNormalPerVertex -q -xyz $cv`;
		$write += " normal='"+$normal[0]+" "+$normal[1]+" "+$normal[2]+"'";
		string $uv[] = `polyListComponentConversion -fv -tuv $cv`;
		float $uvcoord[] = `polyEditUV -q $uv`;
		$write += " uv0='"+$uvcoord[0]+" "+$uvcoord[1]+"'/>\n";
		}	
	$write += "\t<triangle_set>\n";
	string $sg[] = `listConnections -type shadingEngine $one`;
	string $mat[] = `listConnections $sg[0]`;
	//$mat[2] holds the actual material.
	$write += "\t<material_name>"+$mat[2]+"</material_name>\n";
	for($x = 0;$x < $nF[0];$x++){
		string $curface = $one +".f["+$x+"]";
		string $vfl[] = `polyListComponentConversion -ff -tvf $curface`;
		$vfl = `filterExpand -sm 70 $vfl`;
		$write +="\t\t<tri>";
		for ($v in $vfl){
			string $vert[]=`polyListComponentConversion -fvf -tv $v`;
			string $vnum = match("[0-9]+",match("[0-9]+\]",$vert[0]));
			int $conv = $vnum;
			$write += $conv + " ";
		}
		$write += "</tri>\n";
	}	
	$write += "\t</triangle_set>\n";
	$write += "\t</embedded>\n";
	$write += "</mesh>";
	}
}

//Models
string $trans[] =`ls -s`;
for ($one in $trans) {
			string $shape[] = `listRelatives -shapes $one`;
			if (`objectType $one` == "mesh"){
			$write += "\n\n<model>\n\t<pos>0 0 0</pos>";
		$write += "\n\t<scale>1</scale>";
		$write += "\n\t<rotation><matrix>1 0 0 0 1 0 0 0 1</matrix></rotation>";
		$write += "\n\t<mesh_name>"+$one +"</mesh_name>\n</model>";
	}
}
$write += "\n</scene>";
print($write);
if (`window -exists indOut`) deleteUI indOut;
window -title "Output for Indigo Renderer" indOut;
windowPref -wh 500 600 indOut;
rowLayout -h 600;
scrollField -w 480 -h 560 -editable false -tx $write;
showWindow indOut;
Just one thing must be done before rendering...
Write 'lambert1' insted of 'initialMaterialInfo' in the Mesh material_name.

You should kiss my feet Matt! HAHA!!!
Just kidding... hehe...
__________________
Arne OOG - Makin' stuff
>>elqx Studios<<
  Reply with quote
26-05-2006, 06:44 PM   #12
MattTheMan
Registered User
 
MattTheMan's Avatar
 
Join Date: Apr 2005
Location: Fairfield, CT
Posts: 2,436
damn! now I have to add you to credits... :p

BUt still I can't say that you did the whole thing, I'll just add

"Thanks to Arneoog for fixing some major bugs"

Is that ok?

yawn- time to add a nice UI
__________________
Live the life you love, love the life you live
  Reply with quote
26-05-2006, 06:47 PM   #13
arneoog
Registered User
 
arneoog's Avatar
 
Join Date: Mar 2006
Location: Norway
Posts: 189
yepp that's okay
__________________
Arne OOG - Makin' stuff
>>elqx Studios<<
  Reply with quote
26-05-2006, 06:49 PM   #14
arneoog
Registered User
 
arneoog's Avatar
 
Join Date: Mar 2006
Location: Norway
Posts: 189
I made this Icon for Maya some days ago...
Attached Images
File Type: bmp shelf_image.bmp (3.1 KB, 83 views)
__________________
Arne OOG - Makin' stuff
>>elqx Studios<<
  Reply with quote
26-05-2006, 06:52 PM   #15
MattTheMan
Registered User
 
MattTheMan's Avatar
 
Join Date: Apr 2005
Location: Fairfield, CT
Posts: 2,436
cool- oh and just so you know you moved the <name> tag inside the <phong> one, and it gives errors.

edit- I added a conditional that writes lambert1 if the name is InitialShading... whatever
__________________
Live the life you love, love the life you live

Last edited by MattTheMan; 26-05-2006 at 06:55 PM.
  Reply with quote
Reply
Page 1 of 13 1 2 3 11 Last »

Thread Tools


Similar Threads
Thread Thread Starter Forum Replies Last Post
News Article: Free script creates geometry fillet welds in Maya Nilla Site News & Announcements 0 24-04-2017 09:26 PM
changing the "Quick help" window size in the maya 2012 script editor. Jouri Programming 3 27-11-2011 06:15 AM
Maya to 3DS exporter Hellspawnuk Maya Basics & Newbie Lounge 4 14-07-2009 11:48 PM
MAYA 8 .x exporter escataco Maya Basics & Newbie Lounge 2 27-09-2006 07:18 PM
Maya vs. 3DS, Light Wave, Rhino ino ect... THX1138 Maya Basics & Newbie Lounge 45 17-09-2003 02:09 PM