Re: [PyOpenGL-Users] Coloring Nurb Surface
Brought to you by:
mcfletch
From: Michka P. <mic...@gm...> - 2011-02-24 08:55:19
|
Thanks for answering Dirk : generally the most generic and efficient way for that is to use glTexGen to turn your height into a texture coordinate and use a 1D texture for the colors to interpolate between. This allows you to fully specify the color that are interpolated and also enables you to do non-linear mappings (e.g. have a bright band at a specific height). Give it a try! Ian Mallett : I'd use a vertex shader. The two ideas seem okay for me, but I think I am stuck : I have no influence on the nurb displayed, because I don't know how to modify it before it is displayed. (or after). I tried a few things : 1) I used gluNurbsProperty(nurb, GLU_NURBS_MODE, GLU_NURBS_TESSELLATOR) and gluNurbsCallback(nurb,GLU_NURBS_COLOR,color). I was able to print the colors of every point in the callback function. But I can not modify them. So why does this function exist ? And as the nurb is now tesselated, how can I display it ? 2) I used gluNurbsSurface(nurb, knots, knots, ctrlpts, GL_MAP2_COLOR_4). In the callback documentation for gluNurbsCallback() I have found : This callback is effective only when the user provides a color map (*GL**_**MAP1**_**COLOR**_**4* or *GL**_**MAP2**_**COLOR**_**4*). ``color'' contains four components: R,G,B,A So where can I provide my own color map ? Documentation never says anything about this. My ideas : 1) I could subdivide my big nurb surface in a lot of little nurb patches, and put a colored texture on it. Like the typical molehill.py tutorial you can find everywhere. I think it is quite the same as Dirk's idea ? 2) I could rewrite everything with my own polygons, where I can define the colors myself. Will not be as smooth as it is now, but should work. Michka Popoff |