Exemplo n.º 1
0
static inline QColor properColor(const QString &str)
{
    if (str.isEmpty())
        return QColor();
    int lalpha = 255;
    QString lcolorStr = str;
    if (lcolorStr.at(0) == '#' && lcolorStr.length() == 9) {
        QString alphaStr = lcolorStr;
        alphaStr.truncate(3);
        lcolorStr.remove(0, 3);
        lcolorStr = "#" + lcolorStr;
        alphaStr.remove(0,1);
        bool v;
        lalpha = alphaStr.toInt(&v, 16);
        if (!v)
            lalpha = 255;
    }
    QColor lcolor(lcolorStr);
    if (lcolorStr.contains('#'))
        lcolor.setAlpha(lalpha);
    return lcolor;
}
Exemplo n.º 2
0
void FbxParser::ProcessLight(FbxNode* pNode, std::vector<GS::Light*>& lights)
{
   FbxLight* llight = (FbxLight*) pNode->GetNodeAttribute();
   if (!llight)
      return  ;

    // Get the light color.
   FbxDouble3 c = llight->Color.Get();
   GS::float4 lcolor( c[0], c[1], c[2], 1.0 );
   float intensity = llight->Intensity.Get();
   if (intensity)
     lcolor= lcolor*(intensity/100);
  
    // to do so far, we only process directional light
    if (llight->LightType.Get() == FbxLight::eDirectional)
	{
		//FbxDouble3 dir = pNode->LclRotation.Get(); 
		FbxAnimEvaluator* lEvaluator = mpFbxScene->GetAnimationEvaluator();

        FbxAMatrix lGlobal;
        lGlobal= lEvaluator->GetNodeGlobalTransform( pNode);

		FbxVector4 rotation = lGlobal.GetR();

		 FbxVector4 tran = lGlobal.GetT();
		 FbxQuaternion quaternion = lGlobal.GetQ();
		 GS::float4 q(quaternion[0], quaternion[1], quaternion[2],quaternion[3]);
		 GS::float4x4 rotMat = GS::quat_rotation_matrix(q);
		 GS::float4 dir(mul(rotMat, GS::float4(0, 0, -1, 1)));
    /* dir(0,0,-1);
   FbxQuaternion quaternion = lGlobal.GetQ();
   quaternion.
   LcLRotation3f quaternion3f(quaternion[0], quaternion[1], quaternion[2], quaternion[3]);
   LcLTransform3f rot3f(quaternion3f);
   LcLVec3f rot_dir = dir * rot3f;*/
	}
}