Render.ru

*c, companion

#1
1. Подскажте плз, чем можно компилить примеры из companion?

2. В рендермане есть файл cpp.exe, им можно?

3. Если да, то как прописать путь к библиотекам?, а то он говорит,что типа не могу открыть ri.h, stdio.h

4. В поставке рендермана не обнаружил всех библоиотек, которые требуются для компиления примеров из companion. Взял их всех из турбо си, но опять таки проблема в том, что он не может их открыть, также как и ri.h

5. Правильно ли я понял: после успешной компиляции должен получится рибгенератор so, к которому можно соответствующим образом сослаться в рибе (riprocedural)
 
#2
1. Тем компилятором, под который у тебя есть клиентские либы. В случае прмана под вин32 - это MSVC++
2. нет
3. файлы .h - НЕ библиотеки, каталог где они (и библиотеки) лежат, надо прописывать в опциях компилятора или в командной строке (если ты не используешь GUI компилятора
4. Турбо Си тут вообще ни при делах :))
5. нет, получится должен .exe, который при запуске будет генерировать риб в stdout
 
#3
1. Microsoft VC++ под Wintel (хотя можно наверное и другими попробовать)
2. cpp.exe в prman\etc используется как препроцессор для шейдеров.
3. SET INCLUDE = %INCLUDE%;C:\Pixar\prman-10.0\include
SET LIB = %ILIB%;C:\Pixar\prman-10.0\lib
Остальные пути устанавливаются при инсталляции компилятора.
Ну и в makefile или в коммандной строке для cl.exe можно указать /I<dir>

4. cм.3 Хотя я оч. сомневаюсь, что Borland библиотеки подойдут. Ни разу не пробовал.

5. При компиляции и сборке под Windows должен получится .EXE модуль,
выдающий в stdout RIB поток для рендера. (so под Linux-ом)
В принципе можно его и из rib-a вызывать.
Советую еще заглянуть в C:\Pixar\rat-5.0\devkit\examples\ribgen
Там как раз примеры для mtorFur.DLL лежат.
 
#4
спасибо за ответы :)))
Но перед тем как начать, хочу развеять еще пару сомнений:
1. Так ли понял, что компаньон расчитан для пользоваателей линукса?

2. Че за таинственный файл make который упоминается в уроках, и где он существует?

3. Какой самый простой способ отрендерить, например, файл dome10_1.c?

4. Правильно ли я понял: при его компиляции создастся exe файл, который при запуске автоматически будет генерить рибы, но не на хард, а сразу в prman.exe?
 
#5
1. Когда писался компаньон, про линукс никто и слыхом не слыхивал. Причина твоих затруднений немного иная :) Там на обложке в подзаголовке написано "A programmer's guide to..." То есть как бы подразумевается, что читатель - немного программер и знаком с основами языка С и опциями компилятора. Ну а поскольку в линукс (как и в любой юникс) компилятор С входит стандартно, там работать с ним немного проще...
2. Тут совсем недавно про это спрашивали, не сочти за труд, ткни в "поиск"...
3. компилятор.exe -Iпуть_к_файлам_h -Lпуть_к_файлам_lib твой_файл.с файлы.lib
а вообще-то я могу ошибаться, лучше смотреть доку к компилятору. Когда получится твой_файл.ехе:
4. твой_файл.ехе > файл.риб - получится запись на диск,
твой_файл.ехе | prman.exe - получится рендеринг прманом
 
#6
Еще вопросик
Установил msvc ++, пополнил его папку include и lib файлами из рендермана
(msvc ++ скушал ri.h и, например, cube.h)
Но при создании *.exe пишет несколько ошибок

ccube2_6.obj : error LNK2001: unresolved external symbol _RiAttributeEnd
ccube2_6.obj : error LNK2001: unresolved external symbol _RiTransformEnd
ccube2_6.obj : error LNK2001: unresolved external symbol _UnitCube
ccube2_6.obj : error LNK2001: unresolved external symbol _RiTransformBegin
 
#7
из 17 ошибок после прописываения файлов *. lib осталось 3:
--------------------Configuration: ccube2_6 - Win32 Debug--------------------
Linking...
LINK : warning LNK4098: defaultlib "LIBCMT" conflicts with use of other libs; use /NODEFAULTLIB:library
ccube2_6.obj : error LNK2001: unresolved external symbol _UnitCube
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/ccube2_6.exe : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.

ccube2_6.exe - 3 error(s), 1 warning(s)

Подскажите плз.
 
#8
Ну дык вроде же по-русски :)-) написано: use /NODEFAULTLIB:LIBCMT
ну и что-то там у тебя не то с UnitCube() и main() - похоже, что либо нету их в исходнике, либо где-то надо отключить генерацию хитромудрых имен C++ в C-шных сорцах. Точнее пока не могу - на работе у меня MSVC нету.
 
#9
> Установил msvc ++, пополнил его папку
> include и lib файлами из рендермана

Надо было просто прописать к ним пути в Tools->Options->Directories

> LINK : warning LNK4098: defaultlib "LIBCMT"
> conflicts with use of other libs;
> use /NODEFAULTLIB:library

/NODEFAULTLIB:libcmt нужно прописать в Project->Settings->Link->Project Options
 
#12
Извините, что достаю своим програмизмом, но может ли ктонть сказать "где у меня ошибка". Осталось всего-то 2 исправить. (Ошибки типа: "_Go already defined in wrap6_4.obj" - не всегда появляются:))) )

--------------------Configuration: wrap6_4 - Win32 Debug--------------------
Linking...
frac10_3.obj : error LNK2005: _Go already defined in wrap6_4.obj
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/wrap6_4.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

wrap6_4.exe - 3 error(s), 0 warning(s)
 
#13
с меня понятный туториал "как сделать свой первый риб генератор под windows"
 
#14
Похоже, что в LIBCD.LIB уже есть функция Go(), попробуй переименовать свою во что-нибудь другое... А что у тебя с main()? Она вообще-то есть в исходнике или как?
 
#15
... поспешишь - людей рассмешишь :( Это я про себя :)
Go() у тебя встречается дважды: в frac10_3.с и wrap6_4.с и оба этих файла входят в состав проекта, который ты компилируешь, а это неверно.
А про main() - проверь, есть ли она вообще.
 
#16
Ага, c Go исправил, пока такой ощибки не возникает, осталось тока LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main

1. А что такое main()?
2. Как узнать, есть ли этот main() или его нет.
3. Если его нет, то где можно взять.
4. В папке с уроками есть файл main.c, в котором есть строчка main(void). В этом файле, в основнеом описываетя положение камеры и параметры рендера. Это то?
5. Может ли эта ошибка возникать из-за неполностью установленного msvc++. Просто я ставил с какого-то самодельного 1 диска, собранного из 6 оригинальных. И еще: файл LMERR.H не установился, потому, что диск порченный. Из за этого может быть?
 
#17
1. main() - это функция, с которой и начинается исполнение любой твоей программы
2. Если ты ее написал, она есть
3. См. 2
4. См. 2
5. Нет
И последнее: уважаемый Slava, все же было бы неплохо сходить в ближайший магазин и купить самую дешевую книжку о языке С. Либо (как вариант) найти в инете русский перевод книжки авторов Kernigan and Ritchie "Язык программирования С". Все эти вопросы будут разрешены после прочтения первого десятка страниц... Первая же попытка найти ее на рамблере выдает http://www.gstation.ru/doc/k-r.zip
В общем, как гритца... RTFM
 
#18
Я так понимаю, Вы пишете штуку, которая просто пишет RIB в файлик, а не RIB Generator под MTOR ? В таком случае у Вас заведомо где-то должна быть эта самая main(), если это консольное приложение.
 
#19
Не, не в файлик. Если в файлик, то он полчится очень большой, т.к. пишу процедурную поверхность. А для того, чтоб её написать, надо сначала орендерить парочку примеров из компаньона. Затея изначально и состояла в том, чтоб не записывать риб на диск, а прям в рендер. Пока ни фига не получается :-((. Но обязательно получится.
Не получается получить ехе файл, что который предполагалось направить в stdin prman-а.
В исходниках компаньона нигде почему-то не пишут main().
Что делать?
Ну можно, конечно, попросить знакомого программера помочь, ну что-то он точно скомпилирует. Но будет ли это то, что надо, если эти примеры переписывать и доделывать. Странно, но ведь писали чтоб работало, а не "просто". Интуция подсказывает, что должно рендерится так, как оно есть.
Ктонь вообще удачно проходил компаньон?
Писал рибгенераторы?
 
#20
Я Вам послал на почту пример (ribtree) из Affine Toolkit (www.affine.org).
Думаю поможет. Я, кстати, проверил - компилится.
 
Сверху