In Maya 4.5 (and 4.0), control vertices appear as 1-pixel
dots in the viewport, making it impossible to see them
when the scene contains complex geometry. I have a
Radeon Mobility M6 16MB. I know this is a bug with the
hardware OpenGL renderer, because when I view the
identical scene using software rendering, the control
vertices are painted properly. Please see the attached
screenshots (software vs. hardware) and look at points
surrounding the sphere. In software, they appear as
little magenta squares, but in hardware, they are tiny
dots.
Software rendering of the scene
Hardware rendering of the scene
Logged In: YES
user_id=423974
The Radeon only supports a maximum point size of 1.0. One
of three things needs to happen to resolve this.
1. Maya needs to be modified to render the control points
differently when EXT_pointer_parameters is not supported or
the maximum point size is only 1.0.
2. The Radeon driver needs to be modified to support larger
point sizes and use a software fallback.
3. Someone needs to find a clever way to have the driver do
larger point sizes.
Options 1 and 3 are fairly unlikely and option 2 is fairly
unpleasant.
Logged In: YES
user_id=83339
About your options:
1. It looks as though the Maya team has decided not to
support the Radeons. (The only ATI cards they support are
Fire GL ones.) So I doubt they'll try to accommodate it. Too
bad I'm part of the StudioTools development team rather than
the Maya one. :)
2. Why is this unpleasant? I'd like to try it out.
3. Well, I'm probably not clever enough for this. But I'd still
like to attempt #2.
I've been looking through the code already, but so far I'm not
sure where it is that points are rendered. Any tips?
Logged In: YES
user_id=448744
this happens also in blender and wings3d. In XFree versions
prior to 4.3, they were rendering normally. does this mean
the older version of the driver did software rendering for
the control points?
Logged In: YES
user_id=83339
I also found that when I ran Maya for Windows under
Windows XP on the same machine (same ATI Radeon card
using hardware rendering), the control verticies are rendered
properly. If Windows can do it perfectly, I really don't see why
it should be a problem to do it under Linux. And as
bassaminator just posted, it was working fine before XFree86
4.3. So what's going on?
Logged In: YES
user_id=83339
So is there any status on this? Is anyone trying to implement
option 2?
I actually did get the Maya source code and tried fooling
around with it. Unfortunately it took me weeks to finally get it
to build properly under my Linux distribution (the Maya
developers decided to only officially support Red Hat and I
use Gentoo). Then I tried modifying the Maya source code so
that it would render bitmap icons instead of GL_POINTS when
the point size was greater than 1.0. But I ran into myriad
problems. Most were due the fact that the glVertex
commands can't be trivially converted to glBitmap commands
as they are contained between glBegin and glEnd, and the
way Maya interfaces with OpenGL makes this particulaly
difficult. I spent about three weeks on this and I've finally
given up.
I talked to my friend about this problem and he thinks it's
entirely the driver's responsibility to support software fallback
of larger point sizes, not the application. And as I mentioned
in my last followup, the Windows driver does take care of it.
So I think option 1 is out of the question.
Logged In: YES
user_id=448744
Workaround:
Hi, I managed to hack the blender source code to work around
this.
Removed the glBegin() and glEnd(), create a bitmap array,
replace each glVertex*() call in the block with
glRasterPos*() with the same argument, followed by
glBitmap() as follows:
glPointSize(3.0);
GLubyte Squaredot[9] = { 0xff,0xff,0xff, 0xff,0xff,0xff,
0xff,0xff,0xff };
/*glBegin(GL_POINTS);*/
cpack(0);
/*glVertex3fv(sta);*/
glRasterPos3fv(sta);
glBitmap(3,3,0.0,0.0,0.0,0.0,Squaredot);
/*glVertex3fv(end);*/
glRasterPos3fv(end);
glBitmap(3,3,0.0,0.0,0.0,0.0,Squaredot);
/*glEnd();*/
glPointSize(1.0);
now my control points are nice and fat again. Thanks for the
suggestion, idr, though I still think this should be handled
by the driver.
Logged In: YES
user_id=423974
Have you tried the following patch? It's fairly old, so it
may not apply cleanly.
http://marc.theaimsgroup.com/?l=dri-devel&m=105862837814769&w=2
Whether or not this is an issue that the driver should
handle (and I do agree with you on that), the
GL_ARB_point_parameters spec is specific (not the "Errors"
section) that the driver doesn't have to. The maximum point
size is the maximum size, and anything beyond that is an error.
http://oss.sgi.com/projects/ogl-sample/registry/ARB/point_parameters.txt
Logged In: YES
user_id=448744
Thanks idr! your patch worked (I had to add some #defines in
radeon_tcl.h manually) but the result works so far for me in
unpatched blender. I'll play with it some more over the next
couple of weeks and post here if I have any problems (or not).
btw, I'm using xfree 4.3.0 at the moment.
Logged In: YES
user_id=448744
update:
I've been using the patch since the last post (10-23) and
have had no problems whatsoever; control vertices are
displaying fine in blender, I can play with their sizes, and
it feels responsive with no stability issues.
Any chance this could make it into the main tree? What are
the issues that could prevent that?