You are asking a very advanced question. The BSDF type in Radiance is a recent addition, which accepts an XML file containing the scattering distribution function, which is not what you have. I would recommend using the BRTDfunc type, setting the directional diffuse functions to 0 0 0, since you don’t have this information. You will also need to convert your spectral data to RGB values. I assume your material is not designed to be spectrally selective, so you can choose the values near the dominant wavelengths for RGB, which would be 0.700, 0.520, and 0.430 microns, respectively.
The BRTDfunc type can take constant values for the diffuse and specular amounts. The diffuse amount in this case is the diffuse-only measurement, and the specular would be the direct-hemispherical minus the diffuse-only. Using your notation, you would have something like:
void BRTDfunc measured_trans
10
“if(Rdot,Rfndir700-Rfndif700,Rbndir700-Rbndif700)”
“if(Rdot,Rfndir520-Rfndif520,Rbndir520-Rbndif520)”
“if(Rdot,Rfndir430-Rfndif430,Rbndir430-Rbndif430)”
“Tfndir700-Tfndif700” “Tfndir520-Tfndif520” “Tfndir430-Tfndif430”
0 0 0 .
0
9 Rfndif700 Rfndif520 Rfndif430
Rbndif700 Rbndif520 Rbndif430
Tfndif700 Tfndif520 Tfndif430
Apologies for the poor formatting – I can’t get Discourse to behave for me. The idea is that you want to enter the front- and back-side quantities into the appropriate parts of the material definition. You can do the subtraction yourself, or replace the variables I’ve put above with the numerical values and Radiance will subtract them for you. Or, you can specify your own .cal file in place of the “.” after the three zeroes, and define everything in it like so:
Tfndif700 : 0.0063 ;
Tfndif520 : 0.0061 ;
Tfndif430 : 0.0062 ;
…
Then the above will work except you’ll still need to put numerical values into the final set of 9 arguments, so there probably isn’t much point.
I hope this helps. As I said, you are asking a very advanced question.