Render.ru

Liquid

#1
Если многоуважаемый Kidd не против (как модератор),
предлагаю начать обсуждение subj-a.
У него, конечно есть автор и пара своих форумов на SourceForge,
но пока это все разовьется в нужную сторону (NT on x86),
проще попробовать порешать локальные вопросы внутри
уже сложившегося RMan community на render.ru.
Глядишь, и Colin Doncaster подключится ;-)

Я уже начал пытаться. Кой чего откомпилилось.
Пока уперся в отсутсвие объявления RiDetach and RiAttach.

У автора на сей счет:
Also - because of legal reasons I wasn't able to provide the rib
output library I generally use to compile with - most will work though. There are two functions that will have to be commented out, RiDetach and RiAttach. They are specifically for passing the rib handle back and forth between Liquid and any
plug-ins that might be used. I believe the Pixar library has a similar mechanism these days.

Правильно ли я понял, что эти вызовы можно пока безболезненно закоментить?
 
#2
Да, там же сказано:
There are two functions that will have to be commented out, RiDetach and RiAttach.
 
#3
Как модератор я не против. Это самое оно, в тему.

После погляделок в сорец (я провёл в нём сегодня несколько часов в бесплодных попытках откомпиллировать) я так понял, что Колину всё равно, с какой riblibout компиллировать - от Entropy, от Pixar... От Affine.org... Может, взять оное с Affine.org?
 
#4
Все намного хуже, чем я думал :(

liquidRibTranslator.cpp:

/* Rib Stream Defines */
/* Commented out for Win32 as there is conflicts with Maya's drand on Win32 - go figure */
#ifndef _WIN32
#include <target.h>
#endif
}

Что такое "Maya's drand"?
И ниже по всему файлу похожие строки, из-за чего возникает вот что:

liquidRibTranslator.cpp(1469) : error C2065: 'dirMode' : undeclared identifier
NMAKE : fatal error U1077: 'CL.EXE' : return code '0x2'
Stop.

Неужто под вин32 Колин его не компилил ни разу? :-(
 
#5
Он вроде как написал, что не дает проект под Win32, т.к.

It's trivial to get it compiled under MSVC, it works just the same as any other
Maya plugin. I didn't provide MSVC files because it's so dependant on the location
of all the other libraries. So - just follow the steps in the Maya developers
guide to setup the NT project. Хе-хе ;-)

Т.е. правильней начать строить начиная с Maya Plugin API Wizarda к MSVC.

По поводу dirMode под Win32 -- я его просто убирал, т.к. функции mkdir с двумя аргументами нигде не нашел. Не думаю, что это самая принципиальная проблема.
 
#6
Я вроде начал было с Plugin Wizard, но там для меня слишком темный лес :-( К примеру, у Колина в коде есть main() - а Wizard вроде как для entry point и выхода создает пару функций что-то вроде InitializePlugin() и UninitializePlugin() - кому верить?..
 
#8
После внимательного вглядывания в его якобы makefile ;-)
я пришел к следующему выводу, что надо компилить 2 файла:
liquidPlug.mll (/D "NT_PLUGIN")
liquidBin.exe(?) (/D "NT_APP")
Сборка проекта посредством Wizarda чуть облегчает жизнь с определениями нужных опций для DLL.
Например сразу вставляются /export:initializePlugin /export:uninitializePlugin
 
#10
drand - double random?

А про ту строку вообще ничего сказать не могу - это в контексте надо понимать.

А насчёт компиллировал - конечно, да. Скриншоты в хелпе - откуда?
 
#12
Есть, правда, еще третий вариант: он мог компилировать под Win32, но не MSVС...
 
#13
Опять же, исходя из виденного в makefile, похоже он компилил под Win32 for MIPS;
C++FLAGSO = -Ofast=ip30 -mips3 -n32 -LANG:std

Скорее всего NT на SGI.
 
#14
Имхо маловероятно, что кто-то еще юзает это чудо, скорее уж это следы кросс-компиляции из-под линукса...
 
#15
C горем поплам -- окомпилил без ошибок исходники для liquidPlug.mll
Сейчас уперся в unresolved externals для присоединенных библиотек.
Например:
libtarget.lib(tgdsopath.o) : error LNK2001: unresolved external symbol __pctype
libtarget.lib(tgdsopath.o) : error LNK2001: unresolved external symbol ___mb_cur_max
librib.lib(illum.o) : error LNK2001: unresolved external symbol ___mb_cur_max
libsleargs.lib(exutil.obj) : error LNK2001: unresolved external symbol __imp__RegQueryValueExA@24
ibsleargs.lib(token.obj) : error LNK2001: unresolved external symbol _pthread_mutex_init
libsleargs.lib(paramlist.obj) : error LNK2001: unresolved external symbol _pthread_mutex_lock
и т.д.
Список библиотек прилагается ;-)
Foundation.lib OpenMaya.lib OpenMayaAnim.lib OpenMayaRender.lib OpenMayaUI.lib librib.lib libsloargs.lib liblkm.lib libzip.lib libtarget.lib libsleargs.lib
/nodefaultlib:"LIBCMT"

Может чего не хватает?
Или чего то слишком много? ;-)
 
#16
Имхо libsleargs и libsloargs могут конфликтовать, но unresolved external это не вызовет... libtiff.lib b libjpeg.lib попробуй добавить до кучи: "tgdsopath" - не о display driver ли речь?
 
#17
libtif.lib похоже не причем.
Посмотрел на примеры майских плагинов, что идут c SDK и не вдаваясь
в подробности добавил все что у них было 8-/

kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib

Получил:
liquidPlug4.0.mll - 0 error(s), 0 warning(s)

Однако майка на него сказала следующее:
loadPluginCallback "C:/Liquid/src/liquidPlug/liquidPlug4.0.mll" "plug-in";
// Error: Invalid access to memory location.
//
// Error: No plug-ins loaded - "Invalid access to memory location.

Как жить дальше?!!!
 
#18
Ooops... 0 - errors как то случайно получилось :-(
Добавление всех этих библиотек на результат не повлияло.
А liquidPlug4.0.mll получился из-за force output file....

Продолжаем погружаться....
 
#19
mesh, а как ты справился с
d:\projects\develop\liquid\src\liquidbin.cpp(162) : error C2086: 'i' : redefinition
Это же ошибка... Неужели gcc повторное объявление переменной не считает ошибкой???
А откуда берется
'SIGRTMAX' в том же файле, строка 152.. Ну и там много чего еще...
 
#20
Я брал только файлы перечисленные в его makefile.
Иначе действительно неоткомпилить из-за кучи ошибок.
LIQUIDMAINOBJS = liquidRibObj.obj \
liquidRibNode.obj \
liquidRibData.obj \
liquidGlobalHelpers.obj \
liquidRibSurfaceData.obj \
liquidRibNuCurveData.obj \
liquidRibParticleData.obj \
liquidRibMeshData.obj \
liquidRibLocatorData.obj \
liquidRibCoordData.obj \
liquidRibLightData.obj \
liquidRibHT.obj \
liquidRibTranslator.obj \
liquidGetSloInfo.obj \
liquidGetAttr.obj \
liquidAttachPrefAttribute.obj \
liquidRibGenData.obj \
liquidPreviewShader.obj \
liquidRibSubdivisionData.obj \
liquidMemory.obj
 
Сверху