Пример #1
0
void RgbEffects::RenderFaces(int Phoneme)
{
    int ColorIdx;
    size_t i,idx;
    int n,x,y,s;

    /*
        FacesPhoneme.Add("AI");     0
        FacesPhoneme.Add("E");      1
        FacesPhoneme.Add("FV");     2
        FacesPhoneme.Add("L");      3
        FacesPhoneme.Add("MBP");    4
        FacesPhoneme.Add("O");      5
        FacesPhoneme.Add("U");      6
        FacesPhoneme.Add("WQ");     7
        FacesPhoneme.Add("etc");    8
        FacesPhoneme.Add("rest");   9
    */
    wxColour color;
    wxImage::HSVValue hsv;
    int maxframe=BufferHt*2;
    int frame=(BufferHt * state / 200)%maxframe;
    double offset=double(state)/100.0;
    size_t colorcnt=GetColorCount();


    std::vector<int> chmap;
    chmap.resize(BufferHt * BufferWi,0);
    wxString html = "<html><body><table border=0>";
    int Ht, Wt;
    Ht = BufferHt;
    Wt = BufferWi;
    mouth( Phoneme, Ht,  Wt); // draw a mouth syllable


//size_t NodeCount=GetNodeCount();

//    above is from ModelClass::ChannelLayoutHtml()

#if 0 //DEBUG
//get list of models:
    wxString buf;
    for (auto it = xLightsFrame::PreviewModels.begin(); it != xLightsFrame::PreviewModels.end(); ++it)
        buf += ", " + (*it)->name; //ModelClassPtr*
    debug(1, "faces: models = %s", (const char*)buf + 2);

//get info about one of the models:
    buf = xLightsFrame::PreviewModels[0]->name;
    debug(1, "first model is %s", (const char*)buf);
    buf = xLightsFrame::PreviewModels[0]->ChannelLayoutHtml();
    if (buf.size() > 500) buf.resize(500);
    debug(1, "first 500 char of layout html = %s", (const char*)buf);
#endif



}
void head(void) {
	glColor3f(1.0f, 0.0f, 0.0f); //color the face red
	glTranslatef(0.0, 5.5, -7.5); //position the face, from the torso coordinate frame
	glScalef(2.0, 2.0, 2.0);
	drawCube();
	//draw face cube and then every feature from this coordinate frame
	//all facial features are yellow
	glPushMatrix();
		leye(); //draw left eye
	glPopMatrix();

	glPushMatrix();
		reye(); //draw right eye
	glPopMatrix();
	
	glPushMatrix();
		nose(); //draw nose
	glPopMatrix();

	glPushMatrix();
		mouth(); //draw mouth
	glPopMatrix();
}
Пример #3
0
void RgbEffects::RenderFaces(int Phoneme)
{


    /*
        FacesPhoneme.Add("AI");     0
        FacesPhoneme.Add("E");      1
        FacesPhoneme.Add("FV");     2
        FacesPhoneme.Add("L");      3
        FacesPhoneme.Add("MBP");    4
        FacesPhoneme.Add("O");      5
        FacesPhoneme.Add("U");      6
        FacesPhoneme.Add("WQ");     7
        FacesPhoneme.Add("etc");    8
        FacesPhoneme.Add("rest");   9
    */
    wxColour color;
    wxImage::HSVValue hsv;
    int maxframe=BufferHt*2;
    int frame=(BufferHt * state / 200)%maxframe;
    double offset=double(state)/100.0;
    size_t colorcnt=GetColorCount();

 // xout->SetIntensity(1000, 1);
    std::vector<int> chmap;
    chmap.resize(BufferHt * BufferWi,0);
    wxString html = "<html><body><table border=0>";
    int Ht, Wt;
    Ht = BufferHt;
    Wt = BufferWi;

    mouth( Phoneme, Ht,  Wt); // draw a mouth syllable


//size_t NodeCount=GetNodeCount();

//    above is from ModelClass::ChannelLayoutHtml()

#if 0 //DEBUG
//get list of models:
    wxString buf;
    for (auto it = xLightsFrame::PreviewModels.begin(); it != xLightsFrame::PreviewModels.end(); ++it)
        buf += ", " + (*it)->name; //ModelClassPtr*
    debug(1, "faces: models = %s", (const char*)buf + 2);

//get info about one of the models:
    buf = xLightsFrame::PreviewModels[0]->name;
    debug(1, "first model is %s", (const char*)buf);
    buf = xLightsFrame::PreviewModels[0]->ChannelLayoutHtml();
    if (buf.size() > 500) buf.resize(500);
    debug(1, "first 500 char of layout html = %s", (const char*)buf);
#endif

#if 1 //example code to map pixels back to channels
    wxString model; //set to target model name (optional)
    for (int y=0; y<BufferHt; y++) // For my 20x120 megatree, BufferHt=120
    {
        for (int x=0; x<BufferWi; x++) // BufferWi=20 in the above example
        {
//            ch = GetChannel(x,y);  // <== I need something like this routine
//            wxImage::HSVValue hsv = GetPixel(x, y);
            GetPixel(x, y, color);
//    hsv0 = wxImage::RGBtoHSV( wxImage::RGBValue( c0.Red(), c0.Green(), c0.Blue()));
// wxColor color, mapped;
//                color.Set(Shapes.GetRed(x, y), Shapes.GetGreen(x, y), Shapes.GetBlue(x, y));
//                ColorMap[color.GetRGB()
            if (!color.GetRGB()) continue; //color == BLACK) continue; //pixel is off
            int ch = FindChannelAt(x, y, model);
//            debug(1, "pixel (%d, %d) = 0x%6x is channel %d in model %s", x, y, ch, (const char*)(model.IsEmpty()? "(any)": model.c_str()));
        }
    }
#endif
}