2
Copyright (c) 2008-2009 NetAllied Systems GmbH
4
This file is part of MayaDataModel.
6
Licensed under the MIT Open Source License,
7
for details please see LICENSE file or the website
8
http://www.opensource.org/licenses/mit-license.php
10
#ifndef __MayaDM_POINTLIGHT_H__
11
#define __MayaDM_POINTLIGHT_H__
12
#include "MayaDMTypes.h"
13
#include "MayaDMConnectables.h"
14
#include "MayaDMNonExtendedLightShapeNode.h"
17
class PointLight : public NonExtendedLightShapeNode
20
struct MentalRayControls{
24
float photonIntensity;
38
short smapDetailSamples;
39
float smapDetailAccuracy;
42
unsigned int areaType;
48
short2 areaLowSampling;
50
void write(FILE* file) const
52
fprintf(file,"%i ", miExportMrLight);
53
fprintf(file,"%i ", emitPhotons);
56
fprintf(file,"%f ", photonIntensity);
57
fprintf(file,"%f ", exponent);
58
fprintf(file,"%i ", causticPhotons);
59
fprintf(file,"%i ", globIllPhotons);
60
fprintf(file,"%i ", shadowMap);
61
fprintf(file,"%i ", smapResolution);
62
fprintf(file,"%i ", smapSamples);
63
fprintf(file,"%f ", smapSoftness);
64
fprintf(file,"%f ", smapBias);
65
smapFilename.write(file);
67
fprintf(file,"%i ", smapLightName);
68
fprintf(file,"%i ", smapSceneName);
69
fprintf(file,"%i ", smapFrameExt);
70
fprintf(file,"%i ", smapDetail);
71
fprintf(file,"%i ", smapDetailSamples);
72
fprintf(file,"%f ", smapDetailAccuracy);
73
fprintf(file,"%i ", smapDetailAlpha);
74
fprintf(file,"%i ", areaLight);
75
fprintf(file,"%i ", areaType);
76
areaNormal.write(file);
80
fprintf(file,"%f ", areaRadius);
81
areaSampling.write(file);
83
fprintf(file,"%i ", areaLowLevel);
84
areaLowSampling.write(file);
86
fprintf(file,"%i ", areaVisible);
91
PointLight():NonExtendedLightShapeNode(){}
92
PointLight(FILE* file,const std::string& name,const std::string& parent="",bool shared=false,bool create=true)
93
:NonExtendedLightShapeNode(file, name, parent, "pointLight", shared, create){}
94
virtual ~PointLight(){}
96
void setFogRadius(float fr)
99
fprintf(mFile,"\tsetAttr \".fr\" %f;\n", fr);
101
void setObjectType(char ot)
104
fprintf(mFile,"\tsetAttr \".ot\" %;\n", ot);
106
void setFogType(unsigned int ft)
109
fprintf(mFile,"\tsetAttr \".ft\" %i;\n", ft);
111
void setPointWorld(const float3& pw)
113
if(pw == float3(1.0f,1.0f,1.0f)) return;
114
fprintf(mFile,"\tsetAttr \".pw\" -type \"float3\" ");
116
fprintf(mFile,";\n");
118
void setPointWorldX(float tx)
120
if(tx == 0.0) return;
121
fprintf(mFile,"\tsetAttr \".pw.tx\" %f;\n", tx);
123
void setPointWorldY(float ty)
125
if(ty == 0.0) return;
126
fprintf(mFile,"\tsetAttr \".pw.ty\" %f;\n", ty);
128
void setPointWorldZ(float tz)
130
if(tz == 0.0) return;
131
fprintf(mFile,"\tsetAttr \".pw.tz\" %f;\n", tz);
133
void setFarPointWorld(const float3& fw)
135
if(fw == float3(1.0f,1.0f,1.0f)) return;
136
fprintf(mFile,"\tsetAttr \".fw\" -type \"float3\" ");
138
fprintf(mFile,";\n");
140
void setFarPointWorldX(float fwx)
142
if(fwx == 0.0) return;
143
fprintf(mFile,"\tsetAttr \".fw.fwx\" %f;\n", fwx);
145
void setFarPointWorldY(float fwy)
147
if(fwy == 0.0) return;
148
fprintf(mFile,"\tsetAttr \".fw.fwy\" %f;\n", fwy);
150
void setFarPointWorldZ(float fwz)
152
if(fwz == 0.0) return;
153
fprintf(mFile,"\tsetAttr \".fw.fwz\" %f;\n", fwz);
155
void setFogIntensity(float fin)
157
if(fin == 1.0) return;
158
fprintf(mFile,"\tsetAttr \".fin\" %f;\n", fin);
160
void setMentalRayControls(const MentalRayControls& mrc)
162
fprintf(mFile,"\tsetAttr \".mrc\" ");
164
fprintf(mFile,";\n");
166
void setMiExportMrLight(bool milt)
168
if(milt == false) return;
169
fprintf(mFile,"\tsetAttr \".mrc.milt\" %i;\n", milt);
171
void setEmitPhotons(bool phot)
173
if(phot == false) return;
174
fprintf(mFile,"\tsetAttr \".mrc.phot\" %i;\n", phot);
176
void setEnergy(const float3& eng)
178
fprintf(mFile,"\tsetAttr \".mrc.eng\" -type \"float3\" ");
180
fprintf(mFile,";\n");
182
void setEnergyR(float engr)
184
if(engr == 8000) return;
185
fprintf(mFile,"\tsetAttr \".mrc.eng.engr\" %f;\n", engr);
187
void setEnergyG(float engg)
189
if(engg == 8000) return;
190
fprintf(mFile,"\tsetAttr \".mrc.eng.engg\" %f;\n", engg);
192
void setEnergyB(float engb)
194
if(engb == 8000) return;
195
fprintf(mFile,"\tsetAttr \".mrc.eng.engb\" %f;\n", engb);
197
void setPhotonIntensity(float phi)
200
fprintf(mFile,"\tsetAttr \".mrc.phi\" %f;\n", phi);
202
void setExponent(float exp)
205
fprintf(mFile,"\tsetAttr \".mrc.exp\" %f;\n", exp);
207
void setCausticPhotons(int cph)
209
if(cph == 10000) return;
210
fprintf(mFile,"\tsetAttr \".mrc.cph\" %i;\n", cph);
212
void setGlobIllPhotons(int gph)
214
if(gph == 10000) return;
215
fprintf(mFile,"\tsetAttr \".mrc.gph\" %i;\n", gph);
217
void setShadowMap(bool usm)
219
if(usm == false) return;
220
fprintf(mFile,"\tsetAttr \".mrc.usm\" %i;\n", usm);
222
void setSmapResolution(int smr)
224
if(smr == 256) return;
225
fprintf(mFile,"\tsetAttr \".mrc.smr\" %i;\n", smr);
227
void setSmapSamples(short smsa)
229
if(smsa == 1) return;
230
fprintf(mFile,"\tsetAttr \".mrc.smsa\" %i;\n", smsa);
232
void setSmapSoftness(float smso)
234
if(smso == 0) return;
235
fprintf(mFile,"\tsetAttr \".mrc.smso\" %f;\n", smso);
237
void setSmapBias(float smb)
240
fprintf(mFile,"\tsetAttr \".mrc.smb\" %f;\n", smb);
242
void setSmapFilename(const string& smf)
244
if(smf == "NULL") return;
245
fprintf(mFile,"\tsetAttr \".mrc.smf\" -type \"string\" ");
247
fprintf(mFile,";\n");
249
void setSmapLightName(bool smln)
251
if(smln == 0) return;
252
fprintf(mFile,"\tsetAttr \".mrc.smln\" %i;\n", smln);
254
void setSmapSceneName(bool smsn)
256
if(smsn == 0) return;
257
fprintf(mFile,"\tsetAttr \".mrc.smsn\" %i;\n", smsn);
259
void setSmapFrameExt(bool smfe)
261
if(smfe == 0) return;
262
fprintf(mFile,"\tsetAttr \".mrc.smfe\" %i;\n", smfe);
264
void setSmapDetail(bool smd)
267
fprintf(mFile,"\tsetAttr \".mrc.smd\" %i;\n", smd);
269
void setSmapDetailSamples(short sds)
272
fprintf(mFile,"\tsetAttr \".mrc.sds\" %i;\n", sds);
274
void setSmapDetailAccuracy(float sdac)
276
if(sdac == 0) return;
277
fprintf(mFile,"\tsetAttr \".mrc.sdac\" %f;\n", sdac);
279
void setSmapDetailAlpha(bool sdal)
281
if(sdal == 0) return;
282
fprintf(mFile,"\tsetAttr \".mrc.sdal\" %i;\n", sdal);
284
void setAreaLight(bool algt)
286
if(algt == false) return;
287
fprintf(mFile,"\tsetAttr \".mrc.algt\" %i;\n", algt);
289
void setAreaType(unsigned int atyp)
291
if(atyp == 0) return;
292
fprintf(mFile,"\tsetAttr \".mrc.atyp\" %i;\n", atyp);
294
void setAreaNormal(const float3& ano)
296
fprintf(mFile,"\tsetAttr \".mrc.ano\" -type \"float3\" ");
298
fprintf(mFile,";\n");
300
void setAreaNormalX(float anox)
302
if(anox == 0) return;
303
fprintf(mFile,"\tsetAttr \".mrc.ano.anox\" %f;\n", anox);
305
void setAreaNormalY(float anoy)
307
if(anoy == 2) return;
308
fprintf(mFile,"\tsetAttr \".mrc.ano.anoy\" %f;\n", anoy);
310
void setAreaNormalZ(float anoz)
312
if(anoz == 0) return;
313
fprintf(mFile,"\tsetAttr \".mrc.ano.anoz\" %f;\n", anoz);
315
void setAreaEdge(const float3& aed)
317
fprintf(mFile,"\tsetAttr \".mrc.aed\" -type \"float3\" ");
319
fprintf(mFile,";\n");
321
void setAreaEdgeX(float aedx)
323
if(aedx == 2) return;
324
fprintf(mFile,"\tsetAttr \".mrc.aed.aedx\" %f;\n", aedx);
326
void setAreaEdgeY(float aedy)
328
if(aedy == 0) return;
329
fprintf(mFile,"\tsetAttr \".mrc.aed.aedy\" %f;\n", aedy);
331
void setAreaEdgeZ(float aedz)
333
if(aedz == 0) return;
334
fprintf(mFile,"\tsetAttr \".mrc.aed.aedz\" %f;\n", aedz);
336
void setAreaRadius(float arad)
338
if(arad == 2) return;
339
fprintf(mFile,"\tsetAttr \".mrc.arad\" %f;\n", arad);
341
void setAreaSampling(const short2& asa)
343
fprintf(mFile,"\tsetAttr \".mrc.asa\" -type \"short2\" ");
345
fprintf(mFile,";\n");
347
void setAreaSamplingU(short asau)
349
if(asau == 3) return;
350
fprintf(mFile,"\tsetAttr \".mrc.asa.asau\" %i;\n", asau);
352
void setAreaSamplingV(short asav)
354
if(asav == 3) return;
355
fprintf(mFile,"\tsetAttr \".mrc.asa.asav\" %i;\n", asav);
357
void setAreaLowLevel(short alev)
359
if(alev == 0) return;
360
fprintf(mFile,"\tsetAttr \".mrc.alev\" %i;\n", alev);
362
void setAreaLowSampling(const short2& alo)
364
fprintf(mFile,"\tsetAttr \".mrc.alo\" -type \"short2\" ");
366
fprintf(mFile,";\n");
368
void setAreaLowSamplingU(short alou)
370
if(alou == 2) return;
371
fprintf(mFile,"\tsetAttr \".mrc.alo.alou\" %i;\n", alou);
373
void setAreaLowSamplingV(short alov)
375
if(alov == 2) return;
376
fprintf(mFile,"\tsetAttr \".mrc.alo.alov\" %i;\n", alov);
378
void setAreaVisible(bool avis)
380
if(avis == false) return;
381
fprintf(mFile,"\tsetAttr \".mrc.avis\" %i;\n", avis);
383
void getFogGeometry()const
385
fprintf(mFile,"\"%s.fg\"",mName.c_str());
387
void getFogRadius()const
389
fprintf(mFile,"\"%s.fr\"",mName.c_str());
391
void getLightGlow()const
393
fprintf(mFile,"\"%s.lg\"",mName.c_str());
395
void getObjectType()const
397
fprintf(mFile,"\"%s.ot\"",mName.c_str());
399
void getFogType()const
401
fprintf(mFile,"\"%s.ft\"",mName.c_str());
403
void getPointWorld()const
405
fprintf(mFile,"\"%s.pw\"",mName.c_str());
407
void getPointWorldX()const
409
fprintf(mFile,"\"%s.pw.tx\"",mName.c_str());
411
void getPointWorldY()const
413
fprintf(mFile,"\"%s.pw.ty\"",mName.c_str());
415
void getPointWorldZ()const
417
fprintf(mFile,"\"%s.pw.tz\"",mName.c_str());
419
void getFarPointWorld()const
421
fprintf(mFile,"\"%s.fw\"",mName.c_str());
423
void getFarPointWorldX()const
425
fprintf(mFile,"\"%s.fw.fwx\"",mName.c_str());
427
void getFarPointWorldY()const
429
fprintf(mFile,"\"%s.fw.fwy\"",mName.c_str());
431
void getFarPointWorldZ()const
433
fprintf(mFile,"\"%s.fw.fwz\"",mName.c_str());
435
void getFogIntensity()const
437
fprintf(mFile,"\"%s.fin\"",mName.c_str());
439
void getMentalRayControls()const
441
fprintf(mFile,"\"%s.mrc\"",mName.c_str());
443
void getMiExportMrLight()const
445
fprintf(mFile,"\"%s.mrc.milt\"",mName.c_str());
447
void getMiLightShader()const
449
fprintf(mFile,"\"%s.mrc.mils\"",mName.c_str());
451
void getMiPhotonEmitter()const
453
fprintf(mFile,"\"%s.mrc.mipe\"",mName.c_str());
455
void getEmitPhotons()const
457
fprintf(mFile,"\"%s.mrc.phot\"",mName.c_str());
459
void getEnergy()const
461
fprintf(mFile,"\"%s.mrc.eng\"",mName.c_str());
463
void getEnergyR()const
465
fprintf(mFile,"\"%s.mrc.eng.engr\"",mName.c_str());
467
void getEnergyG()const
469
fprintf(mFile,"\"%s.mrc.eng.engg\"",mName.c_str());
471
void getEnergyB()const
473
fprintf(mFile,"\"%s.mrc.eng.engb\"",mName.c_str());
475
void getPhotonIntensity()const
477
fprintf(mFile,"\"%s.mrc.phi\"",mName.c_str());
479
void getExponent()const
481
fprintf(mFile,"\"%s.mrc.exp\"",mName.c_str());
483
void getCausticPhotons()const
485
fprintf(mFile,"\"%s.mrc.cph\"",mName.c_str());
487
void getGlobIllPhotons()const
489
fprintf(mFile,"\"%s.mrc.gph\"",mName.c_str());
491
void getShadowMap()const
493
fprintf(mFile,"\"%s.mrc.usm\"",mName.c_str());
495
void getSmapResolution()const
497
fprintf(mFile,"\"%s.mrc.smr\"",mName.c_str());
499
void getSmapSamples()const
501
fprintf(mFile,"\"%s.mrc.smsa\"",mName.c_str());
503
void getSmapSoftness()const
505
fprintf(mFile,"\"%s.mrc.smso\"",mName.c_str());
507
void getSmapBias()const
509
fprintf(mFile,"\"%s.mrc.smb\"",mName.c_str());
511
void getSmapCamera()const
513
fprintf(mFile,"\"%s.mrc.smc\"",mName.c_str());
515
void getSmapFilename()const
517
fprintf(mFile,"\"%s.mrc.smf\"",mName.c_str());
519
void getSmapLightName()const
521
fprintf(mFile,"\"%s.mrc.smln\"",mName.c_str());
523
void getSmapSceneName()const
525
fprintf(mFile,"\"%s.mrc.smsn\"",mName.c_str());
527
void getSmapFrameExt()const
529
fprintf(mFile,"\"%s.mrc.smfe\"",mName.c_str());
531
void getSmapDetail()const
533
fprintf(mFile,"\"%s.mrc.smd\"",mName.c_str());
535
void getSmapDetailSamples()const
537
fprintf(mFile,"\"%s.mrc.sds\"",mName.c_str());
539
void getSmapDetailAccuracy()const
541
fprintf(mFile,"\"%s.mrc.sdac\"",mName.c_str());
543
void getSmapDetailAlpha()const
545
fprintf(mFile,"\"%s.mrc.sdal\"",mName.c_str());
547
void getAreaLight()const
549
fprintf(mFile,"\"%s.mrc.algt\"",mName.c_str());
551
void getAreaType()const
553
fprintf(mFile,"\"%s.mrc.atyp\"",mName.c_str());
555
void getAreaNormal()const
557
fprintf(mFile,"\"%s.mrc.ano\"",mName.c_str());
559
void getAreaNormalX()const
561
fprintf(mFile,"\"%s.mrc.ano.anox\"",mName.c_str());
563
void getAreaNormalY()const
565
fprintf(mFile,"\"%s.mrc.ano.anoy\"",mName.c_str());
567
void getAreaNormalZ()const
569
fprintf(mFile,"\"%s.mrc.ano.anoz\"",mName.c_str());
571
void getAreaEdge()const
573
fprintf(mFile,"\"%s.mrc.aed\"",mName.c_str());
575
void getAreaEdgeX()const
577
fprintf(mFile,"\"%s.mrc.aed.aedx\"",mName.c_str());
579
void getAreaEdgeY()const
581
fprintf(mFile,"\"%s.mrc.aed.aedy\"",mName.c_str());
583
void getAreaEdgeZ()const
585
fprintf(mFile,"\"%s.mrc.aed.aedz\"",mName.c_str());
587
void getAreaRadius()const
589
fprintf(mFile,"\"%s.mrc.arad\"",mName.c_str());
591
void getAreaSampling()const
593
fprintf(mFile,"\"%s.mrc.asa\"",mName.c_str());
595
void getAreaSamplingU()const
597
fprintf(mFile,"\"%s.mrc.asa.asau\"",mName.c_str());
599
void getAreaSamplingV()const
601
fprintf(mFile,"\"%s.mrc.asa.asav\"",mName.c_str());
603
void getAreaLowLevel()const
605
fprintf(mFile,"\"%s.mrc.alev\"",mName.c_str());
607
void getAreaLowSampling()const
609
fprintf(mFile,"\"%s.mrc.alo\"",mName.c_str());
611
void getAreaLowSamplingU()const
613
fprintf(mFile,"\"%s.mrc.alo.alou\"",mName.c_str());
615
void getAreaLowSamplingV()const
617
fprintf(mFile,"\"%s.mrc.alo.alov\"",mName.c_str());
619
void getAreaVisible()const
621
fprintf(mFile,"\"%s.mrc.avis\"",mName.c_str());
623
void getMiLightProfile()const
625
fprintf(mFile,"\"%s.mrc.mlp\"",mName.c_str());
628
PointLight(FILE* file,const std::string& name,const std::string& parent,const std::string& nodeType,bool shared=false,bool create=true)
629
:NonExtendedLightShapeNode(file, name, parent, nodeType, shared, create) {}
633
#endif//__MayaDM_POINTLIGHT_H__