Thank you Kym!
Unfortunately, in my case, there is no discrete graphics card, only Intel. My laptop is not that old, but every Mesa update makes Houdini work worse (Ubuntu 21.10 Mesa 21.2 Houdini doesn't even start) and it's not clear what to do about it. I tried to tell the Mesa developers about the problem, but they came to the conclusion that the problem is in Houdini (although it is not clear why then everything worked on older versions?).
And now I have some kind of circle of dependencies - I cannot use new Linux distributions because Houdini does not work, and I cannot use old ones because many other programs in use require updating Mesa to the newest available version.
With Windows, the situation is no better - I have very frequent BSODs (about 1 - 3 times a day), presumably due to NVME drive (in Linux, the same configuration works very stably) and impermissibly slow work (even every start of Houdini takes about 30 - 45 seconds , on Linux, starting Houdini even after a reboot is no longer than 10-15 seconds, delays when calling nodes and updating parameters, and so on with everything else in operation).
And I don't know what to do. Yes, I have a powerful work computer on which I do almost all the work, but even there not everything works well. I often find it much more convenient to start my laptop and check how some new idea or algorithm works, but with Windows I get a lot of annoyance when working with this operating system, and for Linux, problems with Mesa! :S
I'm already thinking about buying a new laptop, but there is no guarantee that everything will work as it should (and I cannot overpay for productive configurations with a dedicated video card, although in such cases you can get a lot of problems with drivers on Linux - and unacceptably slow work Windows)
Found 30 posts.
Search results Show results as topic list.
Houdini Lounge » Crash on Linux
- PrintScreen
- 30 posts
- Offline
Work in Progress » Procedual mechanical animals
- PrintScreen
- 30 posts
- Offline
Work in Progress » Procedual mechanical animals
- PrintScreen
- 30 posts
- Offline
Hello!
Here is my work about procedural creation of mechanical animals.
https://vimeo.com/482536998 [vimeo.com]
https://vimeo.com/482537992 [vimeo.com]
https://vimeo.com/482539297 [vimeo.com]
Here is my work about procedural creation of mechanical animals.
https://vimeo.com/482536998 [vimeo.com]
https://vimeo.com/482537992 [vimeo.com]
https://vimeo.com/482539297 [vimeo.com]
Houdini Lounge » Crash on Linux
- PrintScreen
- 30 posts
- Offline
After some updates to the mesa driver, I was able to work fine with COP cotnext using the uHaughtyGrayAlien method using i965 instead of iris, but now I get a crash when opening a LOP context. I contacted support for the mesa driver, sent the logs and everything else that was needed, all correspondence and files are available here:
https://gitlab.freedesktop.org/mesa/mesa/-/issues/3569 [gitlab.freedesktop.org]
According to the driver developer there is a problem in the application itself:
“A shader program fails to link, after this there are quite a lot of API errors in the trace. Link error with shader happens because a function is defined multiple times. Eventually this leads to a driver crash because application ignores the linker error.
Bug is seen with 2 functions, applyGamma() and applyLUT(). Application attempts to link shader program that has multiple implementations of these (as ‘passthrough’ version and ‘regular’ version). GLSL language supports function overloading but only with different set of parameters, IMO this is application bug.”
Сan this help solve the problem?
https://gitlab.freedesktop.org/mesa/mesa/-/issues/3569 [gitlab.freedesktop.org]
According to the driver developer there is a problem in the application itself:
“A shader program fails to link, after this there are quite a lot of API errors in the trace. Link error with shader happens because a function is defined multiple times. Eventually this leads to a driver crash because application ignores the linker error.
Bug is seen with 2 functions, applyGamma() and applyLUT(). Application attempts to link shader program that has multiple implementations of these (as ‘passthrough’ version and ‘regular’ version). GLSL language supports function overloading but only with different set of parameters, IMO this is application bug.”
Сan this help solve the problem?
Work in Progress » Procedural generator of random castles
- PrintScreen
- 30 posts
- Offline
Several people have asked me to share the hip file in private messages. I'd better leave it here.
I will be glad to see what you get.
Checked in version 18.0.499
As far as I remember Side FX Labs is required!
I will be glad to see what you get.
Checked in version 18.0.499
As far as I remember Side FX Labs is required!
Houdini Lounge » Crash on Linux
- PrintScreen
- 30 posts
- Offline
What I got.
Ubuntu 20.04 and Linux Mint 20 without any updating (with installed Beignet only) - all work, no crash (Vellum Solver - OK, File node COP - OK) But I didn't check anything else.
Problem is the mesa driver, for Pop!-OS 20.04 mesa driver is 20.0.8 ver. by default. Ubuntu 20.04 and LM 20 - mesa 20.0.4 - by default.
How to downgrade mesa driver in Pop!-OS I do not know, I tried to use Synaptic for this but it does not work. For Ubuntu and LM you can just lock update for all mesa packages by Synaptic and it works for my laptop.
I would be very happy if someone can tell how to deal with the driver in Pop!_OS.
Ubuntu 20.04 and Linux Mint 20 without any updating (with installed Beignet only) - all work, no crash (Vellum Solver - OK, File node COP - OK) But I didn't check anything else.
Problem is the mesa driver, for Pop!-OS 20.04 mesa driver is 20.0.8 ver. by default. Ubuntu 20.04 and LM 20 - mesa 20.0.4 - by default.
How to downgrade mesa driver in Pop!-OS I do not know, I tried to use Synaptic for this but it does not work. For Ubuntu and LM you can just lock update for all mesa packages by Synaptic and it works for my laptop.
I would be very happy if someone can tell how to deal with the driver in Pop!_OS.
Houdini Lounge » Crash on Linux
- PrintScreen
- 30 posts
- Offline
Yes, I got same answer that my system below the system requirements. I tried to say that near me is my old laptop Samsung 530u (Intel 2377m and Intel HD Graphics 3000) with Linux Mint 19 and it works OK, I have installed Houdini 18 - it works! everything exclude Karma Render (because it needs more than OpenGL 3.3 probably) and it does not crash.
I am a little embarrassed to ask for help for myself because I am not a client who makes profit for Side FX, I only use the Apprentice version and only as a hobby to entertain myself (maybe a little advertising for Houdini when I publish something) so I had to agree that my computers are not suitable for all this. I'm a little upset and do not know what I need to do now.
May be I will install Mint again and try my luck there or will ask about it on Linux Forums, in any case I will let you know if I have any success
I am a little embarrassed to ask for help for myself because I am not a client who makes profit for Side FX, I only use the Apprentice version and only as a hobby to entertain myself (maybe a little advertising for Houdini when I publish something) so I had to agree that my computers are not suitable for all this. I'm a little upset and do not know what I need to do now.
May be I will install Mint again and try my luck there or will ask about it on Linux Forums, in any case I will let you know if I have any success
Houdini Lounge » Crash on Linux
- PrintScreen
- 30 posts
- Offline
I have found a new problem. Again crash, again Linux!
Crashes when selecting an image in the File node COP context by button “Choose image”. If I type path by hand - it works OK
Same laptop: i8265u, Intal UHD 620, 16 GB, Pop_OS 20.04
Other File node works OK sort of (checked File SOP)
I will be glad for any help
tmp file:
Crash report from prntscrn; Houdini FX Version 18.0.530
Uptime 269 seconds
Wed Jul 29 19:39:05 2020
Caught signal 11
Traceback from 340413 ThreadId=0x7fb52af60c80
AP_Interface::coreDumpChaser(UTsignalHandlerArg) <libHoudiniUI.so>
AP_Interface::si_CrashHandler::chaser(UTsignalHandlerArg) <libHoudiniUI.so>
signalCallback(UTsignalHandlerArg) <libHoudiniUT.so>
UT_Signal::UT_ComboSignalHandler:perator()(int, siginfo_t*, void*) const <libHoudiniUT.so>
UT_Signal::processSignal(int, siginfo_t*, void*) <libHoudiniUT.so>
__funlockfile <libpthread.so.0>
nouveau_drm_screen_create <iris_dri.so>
nouveau_drm_screen_create <iris_dri.so>
__driDriverGetExtensions_zink <iris_dri.so>
__driDriverGetExtensions_zink <iris_dri.so>
__driDriverGetExtensions_zink <iris_dri.so>
RE_RenderFlush::draw(RE_Render*) <libHoudiniUI.so>
RE_RenderFlush::flush(bool) <libHoudiniUI.so>
RE_OGLRender::blendAlpha(int) <libHoudiniUI.so>
RE_IconTextureCache::renderTexture(RE_Render*, int, int, int, int, RE_OGLTexture*, float, float) <libHoudiniUI.so>
UI_Icon::render(RE_Render*, int, int, int, int, void*) <libHoudiniUI.so>
UI_IconButtonLook::renderIcon(RE_Render*, UT_Rect<UT_InclusiveRectImpl> const&, void*, int, int) <libHoudiniUI.so>
UI_IconButtonLook::renderFlatButton(RE_Render*, int, int, int, int, void*, UI_LookState) <libHoudiniUI.so>
UI_IconButtonLook::render(RE_Render*, int, int, int, int, void*) <libHoudiniUI.so>
UI_Feel::doRender(RE_Render*, int, int) <libHoudiniUI.so>
UI_HelpFeel::doRender(RE_Render*, int, int) <libHoudiniUI.so>
UI_TriggerButton::doRender(RE_Render*, int, int) <libHoudiniUI.so>
UI_Feel::renderMe(RE_Render*, int, int) <libHoudiniUI.so>
UI_Feel::doRenderKids(RE_Render*, int, int) <libHoudiniUI.so>
UI_Feel::doRender(RE_Render*, int, int) <libHoudiniUI.so>
UI_Feel::renderMe(RE_Render*, int, int) <libHoudiniUI.so>
UI_Feel::doRenderKids(RE_Render*, int, int) <libHoudiniUI.so>
UI_Feel::doRender(RE_Render*, int, int) <libHoudiniUI.so>
UI_Feel::renderMe(RE_Render*, int, int) <libHoudiniUI.so>
UI_Feel::doRenderKids(RE_Render*, int, int) <libHoudiniUI.so>
UI_Feel::doRender(RE_Render*, int, int) <libHoudiniUI.so>
UI_Feel::renderMe(RE_Render*, int, int) <libHoudiniUI.so>
UI_Feel::doRenderKids(RE_Render*, int, int) <libHoudiniUI.so>
UI_Feel::doRender(RE_Render*, int, int) <libHoudiniUI.so>
UI_Feel::renderMe(RE_Render*, int, int) <libHoudiniUI.so>
UI_Feel::doRenderKids(RE_Render*, int, int) <libHoudiniUI.so>
UI_Feel::doRender(RE_Render*, int, int) <libHoudiniUI.so>
UI_Feel::renderMe(RE_Render*, int, int) <libHoudiniUI.so>
UI_Feel::doRenderKids(RE_Render*, int, int) <libHoudiniUI.so>
UI_Feel::doRender(RE_Render*, int, int) <libHoudiniUI.so>
UI_Feel::renderMe(RE_Render*, int, int) <libHoudiniUI.so>
UI_Feel::doRenderKids(RE_Render*, int, int) <libHoudiniUI.so>
UI_Feel::doRender(RE_Render*, int, int) <libHoudiniUI.so>
UI_Viewport::reRender(RE_Render*, bool) <libHoudiniUI.so>
UI_Window::renderChildViews(RE_Render*) <libHoudiniUI.so>
UI_Window::doRedrawSubclass() <libHoudiniUI.so>
UI_Window::doRedraw() <libHoudiniUI.so>
QT_GeneratorThread::doImmediateRedraw_(QWidget*) <libHoudiniUI.so>
QT_GeneratorThread::handleQtWidgetEvent(QWidget*, QEvent*) <libHoudiniUI.so>
qt_EventFilter::eventFilter(QObject*, QEvent*) <libHoudiniUI.so>
QCoreApplicationPrivate::sendThroughApplicationEventFilters(QObject*, QEvent*) <libQt5Core.so.5>
QApplicationPrivate::notify_helper(QObject*, QEvent*) <libQt5Widgets.so.5>
QApplication::notify(QObject*, QEvent*) <libQt5Widgets.so.5>
QCoreApplication::notifyInternal2(QObject*, QEvent*) <libQt5Core.so.5>
QApplication::setActiveWindow(QWidget*) <libQt5Widgets.so.5>
QApplicationPrivate::notifyActiveWindowChange(QWindow*) <libQt5Widgets.so.5>
QGuiApplicationPrivate::processActivatedEvent(QWindowSystemInterfacePrivate::ActivatedWindowEvent*) <libQt5Gui.so.5>
QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) <libQt5Gui.so.5>
QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop:rocessEventsFlag>) <libQt5Gui.so.5>
QXcbNativeInterface::dumpNativeWindows(unsigned long long) const <libQt5XcbQpa.so.5>
QT_GeneratorThread::rawEventsWaiting() <libHoudiniUI.so>
UI_GeneratorThread::eventsPending() <libHoudiniUI.so>
QT_EventGenerator::eventsWaiting() <libHoudiniUI.so>
UI_Queue::pollGenerators(bool) <libHoudiniUI.so>
UI_Queue::generateEvents(bool, bool) <libHoudiniUI.so>
UI_Queue::eventLoop() <libHoudiniUI.so>
main <libHoudiniUI.so>
__libc_start_main <libc.so.6>
main <happrentice-bin>
Crashes when selecting an image in the File node COP context by button “Choose image”. If I type path by hand - it works OK
Same laptop: i8265u, Intal UHD 620, 16 GB, Pop_OS 20.04
Other File node works OK sort of (checked File SOP)
I will be glad for any help
tmp file:
Crash report from prntscrn; Houdini FX Version 18.0.530
Uptime 269 seconds
Wed Jul 29 19:39:05 2020
Caught signal 11
Traceback from 340413 ThreadId=0x7fb52af60c80
AP_Interface::coreDumpChaser(UTsignalHandlerArg) <libHoudiniUI.so>
AP_Interface::si_CrashHandler::chaser(UTsignalHandlerArg) <libHoudiniUI.so>
signalCallback(UTsignalHandlerArg) <libHoudiniUT.so>
UT_Signal::UT_ComboSignalHandler:perator()(int, siginfo_t*, void*) const <libHoudiniUT.so>
UT_Signal::processSignal(int, siginfo_t*, void*) <libHoudiniUT.so>
__funlockfile <libpthread.so.0>
nouveau_drm_screen_create <iris_dri.so>
nouveau_drm_screen_create <iris_dri.so>
__driDriverGetExtensions_zink <iris_dri.so>
__driDriverGetExtensions_zink <iris_dri.so>
__driDriverGetExtensions_zink <iris_dri.so>
RE_RenderFlush::draw(RE_Render*) <libHoudiniUI.so>
RE_RenderFlush::flush(bool) <libHoudiniUI.so>
RE_OGLRender::blendAlpha(int) <libHoudiniUI.so>
RE_IconTextureCache::renderTexture(RE_Render*, int, int, int, int, RE_OGLTexture*, float, float) <libHoudiniUI.so>
UI_Icon::render(RE_Render*, int, int, int, int, void*) <libHoudiniUI.so>
UI_IconButtonLook::renderIcon(RE_Render*, UT_Rect<UT_InclusiveRectImpl> const&, void*, int, int) <libHoudiniUI.so>
UI_IconButtonLook::renderFlatButton(RE_Render*, int, int, int, int, void*, UI_LookState) <libHoudiniUI.so>
UI_IconButtonLook::render(RE_Render*, int, int, int, int, void*) <libHoudiniUI.so>
UI_Feel::doRender(RE_Render*, int, int) <libHoudiniUI.so>
UI_HelpFeel::doRender(RE_Render*, int, int) <libHoudiniUI.so>
UI_TriggerButton::doRender(RE_Render*, int, int) <libHoudiniUI.so>
UI_Feel::renderMe(RE_Render*, int, int) <libHoudiniUI.so>
UI_Feel::doRenderKids(RE_Render*, int, int) <libHoudiniUI.so>
UI_Feel::doRender(RE_Render*, int, int) <libHoudiniUI.so>
UI_Feel::renderMe(RE_Render*, int, int) <libHoudiniUI.so>
UI_Feel::doRenderKids(RE_Render*, int, int) <libHoudiniUI.so>
UI_Feel::doRender(RE_Render*, int, int) <libHoudiniUI.so>
UI_Feel::renderMe(RE_Render*, int, int) <libHoudiniUI.so>
UI_Feel::doRenderKids(RE_Render*, int, int) <libHoudiniUI.so>
UI_Feel::doRender(RE_Render*, int, int) <libHoudiniUI.so>
UI_Feel::renderMe(RE_Render*, int, int) <libHoudiniUI.so>
UI_Feel::doRenderKids(RE_Render*, int, int) <libHoudiniUI.so>
UI_Feel::doRender(RE_Render*, int, int) <libHoudiniUI.so>
UI_Feel::renderMe(RE_Render*, int, int) <libHoudiniUI.so>
UI_Feel::doRenderKids(RE_Render*, int, int) <libHoudiniUI.so>
UI_Feel::doRender(RE_Render*, int, int) <libHoudiniUI.so>
UI_Feel::renderMe(RE_Render*, int, int) <libHoudiniUI.so>
UI_Feel::doRenderKids(RE_Render*, int, int) <libHoudiniUI.so>
UI_Feel::doRender(RE_Render*, int, int) <libHoudiniUI.so>
UI_Feel::renderMe(RE_Render*, int, int) <libHoudiniUI.so>
UI_Feel::doRenderKids(RE_Render*, int, int) <libHoudiniUI.so>
UI_Feel::doRender(RE_Render*, int, int) <libHoudiniUI.so>
UI_Viewport::reRender(RE_Render*, bool) <libHoudiniUI.so>
UI_Window::renderChildViews(RE_Render*) <libHoudiniUI.so>
UI_Window::doRedrawSubclass() <libHoudiniUI.so>
UI_Window::doRedraw() <libHoudiniUI.so>
QT_GeneratorThread::doImmediateRedraw_(QWidget*) <libHoudiniUI.so>
QT_GeneratorThread::handleQtWidgetEvent(QWidget*, QEvent*) <libHoudiniUI.so>
qt_EventFilter::eventFilter(QObject*, QEvent*) <libHoudiniUI.so>
QCoreApplicationPrivate::sendThroughApplicationEventFilters(QObject*, QEvent*) <libQt5Core.so.5>
QApplicationPrivate::notify_helper(QObject*, QEvent*) <libQt5Widgets.so.5>
QApplication::notify(QObject*, QEvent*) <libQt5Widgets.so.5>
QCoreApplication::notifyInternal2(QObject*, QEvent*) <libQt5Core.so.5>
QApplication::setActiveWindow(QWidget*) <libQt5Widgets.so.5>
QApplicationPrivate::notifyActiveWindowChange(QWindow*) <libQt5Widgets.so.5>
QGuiApplicationPrivate::processActivatedEvent(QWindowSystemInterfacePrivate::ActivatedWindowEvent*) <libQt5Gui.so.5>
QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) <libQt5Gui.so.5>
QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop:rocessEventsFlag>) <libQt5Gui.so.5>
QXcbNativeInterface::dumpNativeWindows(unsigned long long) const <libQt5XcbQpa.so.5>
QT_GeneratorThread::rawEventsWaiting() <libHoudiniUI.so>
UI_GeneratorThread::eventsPending() <libHoudiniUI.so>
QT_EventGenerator::eventsWaiting() <libHoudiniUI.so>
UI_Queue::pollGenerators(bool) <libHoudiniUI.so>
UI_Queue::generateEvents(bool, bool) <libHoudiniUI.so>
UI_Queue::eventLoop() <libHoudiniUI.so>
main <libHoudiniUI.so>
__libc_start_main <libc.so.6>
main <happrentice-bin>
Houdini Lounge » Crash on Linux
- PrintScreen
- 30 posts
- Offline
Thanks for the answer, it looks really similar, but correct houdini.env didn't work for me.
I found how to solve this problem by installing beignet openCL driver for intel.
Install OpenCL development files:
$ sudo apt install ocl-icd-opencl-dev
And install beignet:
$ sudo apt install beignet
or:
$ sudo apt install beignet-opencl-icd
for new version.
It added Intel(R) UHD Graphics Coffee Lake Mobile GT2 for GPU OpenCL device and it works.
I try it for clean install Pop_OS 20 and I think it will help for any Debian based distributives.
May be it helps for some one else.
I found how to solve this problem by installing beignet openCL driver for intel.
Install OpenCL development files:
$ sudo apt install ocl-icd-opencl-dev
And install beignet:
$ sudo apt install beignet
or:
$ sudo apt install beignet-opencl-icd
for new version.
It added Intel(R) UHD Graphics Coffee Lake Mobile GT2 for GPU OpenCL device and it works.
I try it for clean install Pop_OS 20 and I think it will help for any Debian based distributives.
May be it helps for some one else.
Houdini Lounge » Crash on Linux
- PrintScreen
- 30 posts
- Offline
Hello!
I understand that my laptop is not good for that, but…
I used to use Houdini Apprentice on Ubuntu and Linux Mint 18 and recently decided to upgrade to something newer. Tried Pop_OS 20 but Houdini crashes when connect second input SOP Vellum Solver with open Scene Viewer (or Vellum Solver in DOP). Also on Ubuntu 20.04 and Fedora 32. I suspect that the problem is in the new mesa driver, as on older versions there was an error when using SOP Vellum Solver, but Houdini allowed it to work.
I'm not very good at Linux, Synaptic allows to roll back the mesa version only to 20.0.4, installing OpenCL and switching between GPU and CPU usage - don't help and I don't know what to do next. Has anyone encountered such a problem and how to fix it? Or return to old versions and block updates?
Windows version works correctly except for a few errors in the Intel driver, but High Quality Lighting does not work there.
My Laptop ThinkPad e490: Intel i5 8265u, Intel UHD 620, 16 GB
Temp log:
Crash report from prntscrn; Houdini FX Version 18.0.530
Uptime 36 seconds
Fri Jul 24 12:32:22 2020
Caught signal 11
Traceback from 2863 ThreadId=0x7ff7be654c80
AP_Interface::coreDumpChaser(UTsignalHandlerArg) <libHoudiniUI.so>
AP_Interface::si_CrashHandler::chaser(UTsignalHandlerArg) <libHoudiniUI.so>
signalCallback(UTsignalHandlerArg) <libHoudiniUT.so>
UT_Signal::UT_ComboSignalHandler:perator()(int, siginfo_t*, void*) const <libHoudiniUT.so>
UT_Signal::processSignal(int, siginfo_t*, void*) <libHoudiniUT.so>
__funlockfile <libpthread.so.0>
Thanks for your attention!
I understand that my laptop is not good for that, but…
I used to use Houdini Apprentice on Ubuntu and Linux Mint 18 and recently decided to upgrade to something newer. Tried Pop_OS 20 but Houdini crashes when connect second input SOP Vellum Solver with open Scene Viewer (or Vellum Solver in DOP). Also on Ubuntu 20.04 and Fedora 32. I suspect that the problem is in the new mesa driver, as on older versions there was an error when using SOP Vellum Solver, but Houdini allowed it to work.
I'm not very good at Linux, Synaptic allows to roll back the mesa version only to 20.0.4, installing OpenCL and switching between GPU and CPU usage - don't help and I don't know what to do next. Has anyone encountered such a problem and how to fix it? Or return to old versions and block updates?
Windows version works correctly except for a few errors in the Intel driver, but High Quality Lighting does not work there.
My Laptop ThinkPad e490: Intel i5 8265u, Intel UHD 620, 16 GB
Temp log:
Crash report from prntscrn; Houdini FX Version 18.0.530
Uptime 36 seconds
Fri Jul 24 12:32:22 2020
Caught signal 11
Traceback from 2863 ThreadId=0x7ff7be654c80
AP_Interface::coreDumpChaser(UTsignalHandlerArg) <libHoudiniUI.so>
AP_Interface::si_CrashHandler::chaser(UTsignalHandlerArg) <libHoudiniUI.so>
signalCallback(UTsignalHandlerArg) <libHoudiniUT.so>
UT_Signal::UT_ComboSignalHandler:perator()(int, siginfo_t*, void*) const <libHoudiniUT.so>
UT_Signal::processSignal(int, siginfo_t*, void*) <libHoudiniUT.so>
__funlockfile <libpthread.so.0>
Thanks for your attention!
HOULY Daily Challenge » Day 17 | Animals: Bones
- PrintScreen
- 30 posts
- Offline
HOULY Daily Challenge » Day 1 | Elements: Earth
- PrintScreen
- 30 posts
- Offline
Work in Progress » Rubik snake toy
- PrintScreen
- 30 posts
- Offline
Hello. For a long time I wanted to create something by Python in Houdini, and I saw an interesting work in one of Cinema 4D groups in Telegram (https://t.me/learning_xpresso) - the Rubik snake toy, I really liked it and wanted to do something like that.
How it works: here, each element affects the others (FK), but I need to consider the possibility of switching the direction of FK since collecting everything in one direction only will be very inconvenient. To create FK, I used a CHOP network in which I switched between parents using a button (when you click on the button, the offset for the new parent is updated first, then switch nodes are switched).
Using Python, I made copying for a group of nodes and automatically registered paths for parents in CHOP, made a Clear button(delete nodes with a rig) and an Import button (for easy saving)
The algorithm of work with the toy:
- select the element size and the length of the snake (number of elements) and click the Create button - the entire rig will be created automatically (after creating the rig, changing the number of modules will not affect the created rig in any way). Pressing the Create button again will offer to delete the created rig and create it again with the specified number of modules;
- controllers have only one degree of freedom;
- the Change FK direction button changes the direction of forward kinematic;
- Clear button - will delete the created rig and Import button - will make a separate geo node in the same hip file with object merge node in which there will be only toy geometry (merge geometry from all modules);
- the color of the toy can be changed at any time before Import.
The Point only switch allows you to export points with the orient attribute to create your own modules. With the import of points, a node is created with the bounding geometry of one module.
This is not an hda, all Python code is located in the hou.session module. This is the first thing I did with rigging and Python, so I will be glad to any hints or adjustments as it could be made easier, more convenient or more correct.
How it works: here, each element affects the others (FK), but I need to consider the possibility of switching the direction of FK since collecting everything in one direction only will be very inconvenient. To create FK, I used a CHOP network in which I switched between parents using a button (when you click on the button, the offset for the new parent is updated first, then switch nodes are switched).
Using Python, I made copying for a group of nodes and automatically registered paths for parents in CHOP, made a Clear button(delete nodes with a rig) and an Import button (for easy saving)
The algorithm of work with the toy:
- select the element size and the length of the snake (number of elements) and click the Create button - the entire rig will be created automatically (after creating the rig, changing the number of modules will not affect the created rig in any way). Pressing the Create button again will offer to delete the created rig and create it again with the specified number of modules;
- controllers have only one degree of freedom;
- the Change FK direction button changes the direction of forward kinematic;
- Clear button - will delete the created rig and Import button - will make a separate geo node in the same hip file with object merge node in which there will be only toy geometry (merge geometry from all modules);
- the color of the toy can be changed at any time before Import.
The Point only switch allows you to export points with the orient attribute to create your own modules. With the import of points, a node is created with the bounding geometry of one module.
This is not an hda, all Python code is located in the hou.session module. This is the first thing I did with rigging and Python, so I will be glad to any hints or adjustments as it could be made easier, more convenient or more correct.
Edited by PrintScreen - April 23, 2020 11:49:26
Technical Discussion » Shadow after bevel
- PrintScreen
- 30 posts
- Offline
Work in Progress » Procedural generator of estates
- PrintScreen
- 30 posts
- Offline
https://vimeo.com/406268850 [vimeo.com]
https://vimeo.com/406737608 [vimeo.com]
https://vimeo.com/407059850 [vimeo.com]
https://vimeo.com/407467217 [vimeo.com]
This generator creates a random construction based on the shape and size of the initial quadrangle (its shape is changed randomly by the Jitter seed parameter). The number of buildings included in the complex is regulated by the Iterations parameter. Other parameters affecting the overall shape: - Corner probability changes the number of corner constructions; - Resample range and Expand range adjust the size and frequency of buildings; - Extrude range changes the depth of buildings; - Random seed changes randomness. Each of these parameters is taken into account at each iteration of building construction. So, changing any of these parameters changes the construction at the first iteration, which leads to a change in the subsequent ones. In the general case, these parameters and the general Jitter seed change the randomness of the construction of the basic form for the entire building.
The distribution of the number of floor of buildings can change in two ways: from the center, or randomly.
From the center: the highest part is the base quadrangle, the remaining floors of buildings are distributed depending on the iteration at which these buildings were created. You can set the maximum and minimum number of floors, as well as affect the distribution of floors using a curve.
Random: the number of floor is set randomly for each building, you can set the minimum and maximum floor and change the Random seed.
The ground floor is set by a point whose location is changed by the Impact point translate parameter. Depth of influence is changed by the First floor spread parameter.
The place of construction of the main staircase is automatically selected depending on the distribution of the ground floor. Sometimes a staircase cannot be created due to the peculiarities of the basic shape (there will be intersections or very small sections). For the ground floor, you can change the shape of the bevel of the wall. There is a switch that sets the type of walls in buildings that have a different floor from the ground floor. UV with scale adjustment is assigned to all walls, a color is set for each building, decorative inserts can be changed, as well as windows and doors.
Wooden stairs and balconies are created spreading from buildings with a ground floor. On each floor, the generator will try to make one staircase from the balcony to another balcony, and for each individual balcony - a door. Separate balconies without stairs are created on the walls remote from buildings with a ground floor. Where possible, the generator can create a rope bridge between balconies located on the same floors. All elements are divided into groups, some of the groups can be colored by a generator.
The height of the roofs of buildings can vary depending on the area of the base. On the Roof tab, you can find two types of roof: Quad (quadrangular) and Hard (all others), each type changes independently. You can set the initial height value and adjust it using a curve. Roof inset, Random seed, Roof shift and Roof up parameters can be used to bend and adjust the shape of the roof. Roof balconies will be added automatically where the design and size of the roof allows.
The Use flag switch will add decorative flags to the roofs, here you can configure them by changing the radius of the search for the nearest attachment points (Search radius), the maximum sag (Down) and the number of ropes (Count).
The location of the balloon is selected based on the location of the roof balconies. If there is a balcony at a sufficient height - the balloon will be located next to it with a wooden staircase going to this balcony, if there are no balconies - the balloon will be located in any free place with a rope ladder. The size and shape of the ball can be adjusted and its location adjusted by hand.
PS:
In the generator of castles, I didn’t really like that all angles can be only 90 degrees, here I tried to fix it
https://vimeo.com/406737608 [vimeo.com]
https://vimeo.com/407059850 [vimeo.com]
https://vimeo.com/407467217 [vimeo.com]
This generator creates a random construction based on the shape and size of the initial quadrangle (its shape is changed randomly by the Jitter seed parameter). The number of buildings included in the complex is regulated by the Iterations parameter. Other parameters affecting the overall shape: - Corner probability changes the number of corner constructions; - Resample range and Expand range adjust the size and frequency of buildings; - Extrude range changes the depth of buildings; - Random seed changes randomness. Each of these parameters is taken into account at each iteration of building construction. So, changing any of these parameters changes the construction at the first iteration, which leads to a change in the subsequent ones. In the general case, these parameters and the general Jitter seed change the randomness of the construction of the basic form for the entire building.
The distribution of the number of floor of buildings can change in two ways: from the center, or randomly.
From the center: the highest part is the base quadrangle, the remaining floors of buildings are distributed depending on the iteration at which these buildings were created. You can set the maximum and minimum number of floors, as well as affect the distribution of floors using a curve.
Random: the number of floor is set randomly for each building, you can set the minimum and maximum floor and change the Random seed.
The ground floor is set by a point whose location is changed by the Impact point translate parameter. Depth of influence is changed by the First floor spread parameter.
The place of construction of the main staircase is automatically selected depending on the distribution of the ground floor. Sometimes a staircase cannot be created due to the peculiarities of the basic shape (there will be intersections or very small sections). For the ground floor, you can change the shape of the bevel of the wall. There is a switch that sets the type of walls in buildings that have a different floor from the ground floor. UV with scale adjustment is assigned to all walls, a color is set for each building, decorative inserts can be changed, as well as windows and doors.
Wooden stairs and balconies are created spreading from buildings with a ground floor. On each floor, the generator will try to make one staircase from the balcony to another balcony, and for each individual balcony - a door. Separate balconies without stairs are created on the walls remote from buildings with a ground floor. Where possible, the generator can create a rope bridge between balconies located on the same floors. All elements are divided into groups, some of the groups can be colored by a generator.
The height of the roofs of buildings can vary depending on the area of the base. On the Roof tab, you can find two types of roof: Quad (quadrangular) and Hard (all others), each type changes independently. You can set the initial height value and adjust it using a curve. Roof inset, Random seed, Roof shift and Roof up parameters can be used to bend and adjust the shape of the roof. Roof balconies will be added automatically where the design and size of the roof allows.
The Use flag switch will add decorative flags to the roofs, here you can configure them by changing the radius of the search for the nearest attachment points (Search radius), the maximum sag (Down) and the number of ropes (Count).
The location of the balloon is selected based on the location of the roof balconies. If there is a balcony at a sufficient height - the balloon will be located next to it with a wooden staircase going to this balcony, if there are no balconies - the balloon will be located in any free place with a rope ladder. The size and shape of the ball can be adjusted and its location adjusted by hand.
PS:
In the generator of castles, I didn’t really like that all angles can be only 90 degrees, here I tried to fix it
Edited by PrintScreen - April 14, 2020 04:55:05
Technical Discussion » Shadow after bevel
- PrintScreen
- 30 posts
- Offline
Hello.
I have a simple scene with two grids (one ot them is extruded). There is only one light source in the scene. Without Bevel SOP I get usualy shadow but with Bevel SOP I can't understand why I get shadow like this?
If i increase Divisions in Bevel SOP shadow will look more correctly. Try Houdini 18.0.416 and 18.0.391 Windows.
I have a simple scene with two grids (one ot them is extruded). There is only one light source in the scene. Without Bevel SOP I get usualy shadow but with Bevel SOP I can't understand why I get shadow like this?
If i increase Divisions in Bevel SOP shadow will look more correctly. Try Houdini 18.0.416 and 18.0.391 Windows.
Work in Progress » Procedural generator of random castles
- PrintScreen
- 30 posts
- Offline
Thanks, Kaloyan! Of course there are some ways to model it. Simple and similar parts (doors, windows, lantern, small roof-corner-towers and other) are premodeled by me and was created separated subnetworks or hdassets with some basic parameters. Some parts (top of towers, roofs, bricked corners, bridges etc.) are subnetworks which use input geometry. Many times and nodes was spent to find points for copy or separate parts of geometry that need for ForEach cycles (there are many diferent ForEach cycles, as far as I remember there are cycles with three or more levels of investment). Some balcons are subnetwork for copy (rounded balcon corner are separated subnetwork) and some are hda which use input geometry (depends on the location and the number of levels). And the base of it is simple LSystem with a rotation angle of 90 degrees and copying to the points of square polygons. and the disadvantage of this is that all angles are 90 degrees! Now I'm working on a new generator in which this shortcoming will not exist.
Work in Progress » Procedural generator of random castles
- PrintScreen
- 30 posts
- Offline
malbrechtThese are good ideas, thanks
If you wanted to pursue this idea further, what I would suggest is to allow the user to pick structural points like “here's the well, here's bad-lands etc” and then “weight” certain parts/elements of the structure set accordingly (i.e. create court-yard, create back-side/kitchen-area etc).
You could also think about allowing for components to be edited, so that, additionally to the “19th century reconstruction style” you are currently building, the tool could do various “styles” (you would need to limit heights and block sizes etc).
Work in Progress » Procedural generator of random castles
- PrintScreen
- 30 posts
- Offline
Thanks!
It took about 3 months to create.
If someone needs or wants to see how everything is done inside, of course I will post the file here.
The maximum that I completely calculated was 300 modules and this is already very slow for my computer (i5 8265u, 16 GB RAM, integrated video card). Low poly geometry - I can set 10000, but this is not very similar to a castle, but rather to an intergrown city. Of course, this asset can be easily adapted for creating low poly geometry manually and only calculation of everything else will be automatic, but I am not an artist and can not see the whole picture in one part of it, it is more convenient for me when everything is created at once.
I have nothing to do with professional activities in advertising, cinema, or something like that, at the moment it’s a hobby for me, and I’m not so interested in the render itself as creating geometry, but if someone wants to use this asset for themselves, I’m not against it at the mention of my name
It took about 3 months to create.
If someone needs or wants to see how everything is done inside, of course I will post the file here.
The maximum that I completely calculated was 300 modules and this is already very slow for my computer (i5 8265u, 16 GB RAM, integrated video card). Low poly geometry - I can set 10000, but this is not very similar to a castle, but rather to an intergrown city. Of course, this asset can be easily adapted for creating low poly geometry manually and only calculation of everything else will be automatic, but I am not an artist and can not see the whole picture in one part of it, it is more convenient for me when everything is created at once.
I have nothing to do with professional activities in advertising, cinema, or something like that, at the moment it’s a hobby for me, and I’m not so interested in the render itself as creating geometry, but if someone wants to use this asset for themselves, I’m not against it at the mention of my name
Work in Progress » Procedural generator of random castles
- PrintScreen
- 30 posts
- Offline
https://vimeo.com/391984606 [vimeo.com]
https://vimeo.com/391945236 [vimeo.com]
https://vimeo.com/391985059 [vimeo.com]
This generator allows you to quickly create both simple houses and huge castles. A base is randomly created from which walls, roofs, towers, etc. are extruded. The size (complexity) of the castle is controlled by the “Module count” parameter. There are many settings for influencing the randomness of generating the base form. There are controllers for the probability of building doors (2 types) and windows (3 types + windows of towers and roofs). For complex buildings, there is a «low/High» switch with which you can quickly select the desired basic shape and settings and not wait for the creation of each high poly model. The “Straight probability” parameter of the basic form affects the straightness of building creation, the “Turn probability” parameter, on the contrary, makes the building turn more to the right or left. Part of the base of the castle can be placed on brick columns (“First floor probability” parameter), you can choose the probability of creating towers from the roof (“Square tower probability” parameter), and you can also adjust the creation of large towers and roofs with the “Union Primitives probability” parameter. Balconies are created automatically where the geometry of the basic shape allows (it is possible to influence the places of generation and the number of balconies, but these parameters are not put to the top of the generator), the location of the balconies (all but small) will change only when the basic shape is changed or the location of the doors changes. After the generator selects locations for doors and balconies, selects locations for windows and small balconies (parameters “Window 1”, “Window 2”, “Small balc”). The generator itself will remove windows and doors where it would not be entirely logical to consider their creation. All roofs are built automatically without providing any parameters for the user (they can be controlled, but you need to go deeper into the generator). Where possible, the generator will create a triangular roof, for the towers there are various roof options, they are randomly selected. The generator itself chooses the possibility of creating slopes. For towers there is the possibility of creating bridges, you can specify the minimum and maximum permissible bridge length, select seed or the probability of construction. For all walls (basic form, towers and protrusion balconies), it is possible to create UV coordinates (overlaped) with the regulation of their scale. Each type of window has its own floors for location (balconies have their own windows), the parameters for their settings are only inside the generator (also for doors). For protrusion balconies, the generator can build rounded corners where it is possible. Part of the walls can be used to create stained-glass windows, seed and probability are avialable (you can configure other parameters of the stained-glass windows only inside the generator).
https://vimeo.com/391945236 [vimeo.com]
https://vimeo.com/391985059 [vimeo.com]
This generator allows you to quickly create both simple houses and huge castles. A base is randomly created from which walls, roofs, towers, etc. are extruded. The size (complexity) of the castle is controlled by the “Module count” parameter. There are many settings for influencing the randomness of generating the base form. There are controllers for the probability of building doors (2 types) and windows (3 types + windows of towers and roofs). For complex buildings, there is a «low/High» switch with which you can quickly select the desired basic shape and settings and not wait for the creation of each high poly model. The “Straight probability” parameter of the basic form affects the straightness of building creation, the “Turn probability” parameter, on the contrary, makes the building turn more to the right or left. Part of the base of the castle can be placed on brick columns (“First floor probability” parameter), you can choose the probability of creating towers from the roof (“Square tower probability” parameter), and you can also adjust the creation of large towers and roofs with the “Union Primitives probability” parameter. Balconies are created automatically where the geometry of the basic shape allows (it is possible to influence the places of generation and the number of balconies, but these parameters are not put to the top of the generator), the location of the balconies (all but small) will change only when the basic shape is changed or the location of the doors changes. After the generator selects locations for doors and balconies, selects locations for windows and small balconies (parameters “Window 1”, “Window 2”, “Small balc”). The generator itself will remove windows and doors where it would not be entirely logical to consider their creation. All roofs are built automatically without providing any parameters for the user (they can be controlled, but you need to go deeper into the generator). Where possible, the generator will create a triangular roof, for the towers there are various roof options, they are randomly selected. The generator itself chooses the possibility of creating slopes. For towers there is the possibility of creating bridges, you can specify the minimum and maximum permissible bridge length, select seed or the probability of construction. For all walls (basic form, towers and protrusion balconies), it is possible to create UV coordinates (overlaped) with the regulation of their scale. Each type of window has its own floors for location (balconies have their own windows), the parameters for their settings are only inside the generator (also for doors). For protrusion balconies, the generator can build rounded corners where it is possible. Part of the walls can be used to create stained-glass windows, seed and probability are avialable (you can configure other parameters of the stained-glass windows only inside the generator).
-
- Quick Links