🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: comp.sys.next.programmer
Article #2069

Re: _very_ basic RenderMan question

#2069
From: Shane G. Artis
Date: Tue, 15 Dec 1992 03:34
72 lines
3280 bytes
In article <1992Dec13.110209.5345@lilliput.fdn.org> joseph@lilliput.fdn.org (Joseph Goldstone) writes:
><U54876@uicvm.uic.edu> writes
>> Hello -
>> 
>>   To all you experienced NeXT programmers out there, a very basic question
>> about RenderMan from someone who has just started programming.
>>   I have copied, verbatim, the "minimal program using RenderMan" from page 18
>> of The RenderMan Companion, saved it as test.c, and tried to compile it  
>using:
>> cc -lMedia_s test.c -o test
>> 
>> I get:
>> 
>> /bin/ld: Undefined symbols:
>> _RiBegin
>> _RiWorldBegin
>> _RiSurface
>> _RI_P
>> _RiPolygon
>> _RiWorldEnd
>> _RiEnd
>> 
>...
>
>You can't get there from here.
>
>To compile the programs in the Companion you would need to be able to either  
>directly link in the renderer, or link in the RIB client library routines that  
>emit the RIB eaten by the renderer (which in this case is the renderer in  
>/usr/prman/prman)..

<edited>

Actually, I disagree, up to a point.  I have successfully written and
compiled and executed most of the basic examples in The RenderMan
Companion.  The functions RiBegin(), RiSurface(), etc. exist quite
nicely in libMedia_s.a, and /usr/include/3DKit/ri.h handles things
quite nicely.  I think this person's basic problem is that to compile
you need to use the command:

	cc -g -O RIfile.c -o RIfile -lMedia_s -lNeXT_s

i.e. the libraries need to be at the END of the command line.  The
developers RenderMan is probably basically the same as the NeXT
version, but better documented, more tutorials, a linkable renderer
(for adding new capabilities, like trace(), and a RIB library).  Note
that the big feature here is the linkable renderer.

I think NeXT doesn't want to support the standard Ri() commands
themselves, at the expense of their nice Objective-C environment, but
they still work just fine if you want to use them.

This reasoning may break down when using more sophisticated examples
that I haven't tried yet, but so far I've been able to link in every
Ri function that I've needed to use, and that includes some pretty
sophisticated ones.

By the way, I haven't yet gotten one of the standard RenderMan programs
from the RenderMan Companion to output the picture to the screen - that 
process is not documented.  What I do is add lines like :

        RiBegin(RI_NULL, RI_RENDERER, &archive,
                 RI_FILEPATH, &outputfile, RI_NULL);
        RiOption(RI_ARCHIVE, "outputversion", &v31, RI_NULL);
        RiDisplay("/me/Renderman/src/foo.tiff",RI_FILE,RI_RGBA,RI_NULL);

to my file.  This dumps the rest of the file to a .RIB file, which I
then pass to prman.

Regards,

Shane
Technical Details
Message-ID: <1992Dec15.033437.7339@athena.mit.edu>
Path: arc1-ca.pugleaf.net!sparky!uunet!enterpoop.mit.edu!bloom-picayune.mit.edu!athena.mit.edu!shanega
References: <92346.164214U54876@uicvm.uic.edu> <1992Dec13.110209.5345@lilliput.fdn.org>

Show Full Headers
Complete Article Headers
Newsgroups: comp.sys.next.programmer
Path: arc1-ca.pugleaf.net!sparky!uunet!enterpoop.mit.edu!bloom-picayune.mit.edu!athena.mit.edu!shanega
From: shanega@athena.mit.edu (Shane G. Artis)
Subject: Re: _very_ basic RenderMan question
Message-ID: <1992Dec15.033437.7339@athena.mit.edu>
Keywords: renderman
Sender: news@athena.mit.edu (News system)
Nntp-Posting-Host: e40-008-10.mit.edu
Organization: Massachusetts Institute of Technology
References: <92346.164214U54876@uicvm.uic.edu> <1992Dec13.110209.5345@lilliput.fdn.org>
Date: Tue, 15 Dec 1992 03:34:37 GMT
Lines: 74