After doing some reading about complicated interpolation methods for morph target animations, I thought "Ah for goodness sake - this is going nowhere!" and wrote a very simple weighted average function. That fixed it. I had 2 targets as well as a kind of default shape that I was unconsciously intending to show up as the sum of the other targets was < 1.0. This was my hitch. I threw in a little clamp function to turn this into a sensible value, and tested it in my very handy shader editing demo. That worked:
Generic GLSL codeI updated my talking head demo with the new shader.
I want to implement a few different 3D picking algorithms and try them all; at least ray-casting based and colour-picking methods. I just finished coding up my 3D picking algorithm from the earlier journal entry. It seems to be working in my off-line test programme. Once again, a lot of misleading half-knowledge on the web, and lots of out-dated OpenGL 2.1 information that no longer applies. This older info was a handy reference to make sure that I was on the right track (the first part anyway). Need to try it in a 3D programme now;
C code using the glm maths libraryThe next step is to add in the ray vs sphere code to see if I can click on things. I plan to debug this part visually, so I have been building a function to display a renderable's bounding sphere as a semi-transparent mesh. If I can check against the bounding spheres with the ray, then perhaps change their colour when a hit is detected, it should be pretty easy to verify if the code is working properly and not giving false positives or false negatives.
I plan to get the 3D ray picking working with spheres, then implement a colour-based picking algorithm and compare the results. I'll get them both working in WebGL as well.