I have heard of people who are hijacking the houdini viewport and render directly to it. The idea is to enable quick previews. I.e. if we are simulating millions of particles in a custom made SOP using the GPU it would be great to render directly to the viewport and not have to copy them back to houdini first.
Another approach would be to render the particles to a buffer and then convert the buffer into an image and make houdini display it. Would that be possible?
Or, simply open our own opengl-preview window from the SOP and render to that…
Any ideas?
Thanks.
Found 23 posts.
Search results Show results as topic list.
Technical Discussion » Hijack viewport for preview rendering
- burnie
- 23 posts
- Offline
Technical Discussion » hou.hmath.noise1d returns 0.5
- burnie
- 23 posts
- Offline
Off course! Period of one… now I feel like an idiot
Thanks for pointing that out. And also, thanks for the quick response!
Thanks for pointing that out. And also, thanks for the quick response!
Technical Discussion » hou.hmath.noise1d returns 0.5
- burnie
- 23 posts
- Offline
Hi,
I know how a noise-function works. The whole idea is to get the same “random” number every time at a certain position.
The problem is
hou.hmath.noise1d(hou.Vector3(1.0,1.0,5.0))
hou.hmath.noise1d(hou.Vector3(2.0,1.0,2.0))
hou.hmath.noise1d(hou.Vector3(4.0,1.0,1.0))
all return 0.5
is this function not implemented yet?
I know how a noise-function works. The whole idea is to get the same “random” number every time at a certain position.
The problem is
hou.hmath.noise1d(hou.Vector3(1.0,1.0,5.0))
hou.hmath.noise1d(hou.Vector3(2.0,1.0,2.0))
hou.hmath.noise1d(hou.Vector3(4.0,1.0,1.0))
all return 0.5
is this function not implemented yet?
Technical Discussion » hou.hmath.noise1d returns 0.5
- burnie
- 23 posts
- Offline
I'm trying to use the python noise function.
hou.hmath.noise1d(hou.Vector3(1.0,1.0,1.0))
but it returns 0.5 no matter the input. Am I doing something wrong?
Thanks
hou.hmath.noise1d(hou.Vector3(1.0,1.0,1.0))
but it returns 0.5 no matter the input. Am I doing something wrong?
Thanks
Technical Discussion » merging fluid surface with grid
- burnie
- 23 posts
- Offline
I'm simulating local water surface effects using a volume fluid and objects interacting with it.
Then I would like to merge (extend) the fluid surface with a much larger grid that represents the full ocean and use a displacement shader to add additional effects such as ocean waves.
Since I'm using a displacement shader and raytracing it's beneficial to keep the gridres as low as possible.
I tried just deleting the edges and bottom from the fluid levelset grid using expressions to turn it into a plane. Then I made a hole in a larger grid and simply merged them together. This works fairly well if I make sure the fluid sim never reaches its boundary. However at certain camera angles there might be a small gap between the two surfaces if not perfectly aligned in y-dir.
There must be a better way to stitch the surfaces together?
I guess I could write my own sop for it which deletes edges and bottom from the fluid and then simply extends the surface in all directions.
Any ideas?
Then I would like to merge (extend) the fluid surface with a much larger grid that represents the full ocean and use a displacement shader to add additional effects such as ocean waves.
Since I'm using a displacement shader and raytracing it's beneficial to keep the gridres as low as possible.
I tried just deleting the edges and bottom from the fluid levelset grid using expressions to turn it into a plane. Then I made a hole in a larger grid and simply merged them together. This works fairly well if I make sure the fluid sim never reaches its boundary. However at certain camera angles there might be a small gap between the two surfaces if not perfectly aligned in y-dir.
There must be a better way to stitch the surfaces together?
I guess I could write my own sop for it which deletes edges and bottom from the fluid and then simply extends the surface in all directions.
Any ideas?
Technical Discussion » Fluids threading/slicing
- burnie
- 23 posts
- Offline
I'm quite new to fluids and looking for a way to speed up the simulation by using all cpu-cores. I'm doing volume fluids (liquids, not gas).
Right now the sim runs on only one of my eight cores which is a waste.
There must be a way to slice up the volume and use ghost regions like hqueue does. I would use hqueue if I could but I'm having some trouble with it (emailed support about it).
I tried using the upres (wavelet based?) node but I think it's better for smoke than liquids, right?
So, any ideas on how to maximize cpu usage?
Thanks!
Right now the sim runs on only one of my eight cores which is a waste.
There must be a way to slice up the volume and use ghost regions like hqueue does. I would use hqueue if I could but I'm having some trouble with it (emailed support about it).
I tried using the upres (wavelet based?) node but I think it's better for smoke than liquids, right?
So, any ideas on how to maximize cpu usage?
Thanks!
Technical Discussion » hqueue install issue
- burnie
- 23 posts
- Offline
I'm unable to install hqueue and receive the following error.
“Table ‘hqserver.client_errors’ doesn't exist” - I checked, it does not exist in the db.
Any ideas?
…successfully created the ‘hqserver’ database.
Starting HQueue…
Traceback (most recent call last):
File “./bin/paster”, line 8, in <module>
load_entry_point('PasteScript==1.7.3', ‘console_scripts’, ‘paster’)()
File “/opt/hqueue/lib/python2.5/site-packages/PasteScript-1.7.3-py2.5.egg/paste/script/command.py”, line 84, in run
invoke(command, command_name, options, args)
File “/opt/hqueue/lib/python2.5/site-packages/PasteScript-1.7.3-py2.5.egg/paste/script/command.py”, line 123, in invoke
exit_code = runner.run(args)
File “/opt/hqueue/lib/python2.5/site-packages/PasteScript-1.7.3-py2.5.egg/paste/script/appinstall.py”, line 68, in run
return super(AbstractInstallCommand, self).run(new_args)
File “/opt/hqueue/lib/python2.5/site-packages/PasteScript-1.7.3-py2.5.egg/paste/script/command.py”, line 218, in run
result = self.command()
File “/opt/hqueue/lib/python2.5/site-packages/PasteScript-1.7.3-py2.5.egg/paste/script/appinstall.py”, line 456, in command
self, config_file, section, self.sysconfig_install_vars(installer))
File “/opt/hqueue/lib/python2.5/site-packages/PasteScript-1.7.3-py2.5.egg/paste/script/appinstall.py”, line 600, in setup_config
mod.setup_config(command, filename, section, vars)
File “<stdin>”, line 24, in setup_config
File “/opt/hqueue/lib/python2.5/site-packages/SQLAlchemy-0.5.1-py2.5.egg/sqlalchemy/schema.py”, line 1792, in drop_all
bind.drop(self, checkfirst=checkfirst, tables=tables)
File “/opt/hqueue/lib/python2.5/site-packages/SQLAlchemy-0.5.1-py2.5.egg/sqlalchemy/engine/base.py”, line 1134, in drop
self._run_visitor(self.dialect.schemadropper, entity, connection=connection, **kwargs)
File “/opt/hqueue/lib/python2.5/site-packages/SQLAlchemy-0.5.1-py2.5.egg/sqlalchemy/engine/base.py”, line 1158, in _run_visitor
visitorcallable(self.dialect, conn, **kwargs).traverse(element)
File “/opt/hqueue/lib/python2.5/site-packages/SQLAlchemy-0.5.1-py2.5.egg/sqlalchemy/sql/visitors.py”, line 89, in traverse
return traverse(obj, self.__traverse_options__, self._visitor_dict)
File “/opt/hqueue/lib/python2.5/site-packages/SQLAlchemy-0.5.1-py2.5.egg/sqlalchemy/sql/visitors.py”, line 200, in traverse
return traverse_using(iterate(obj, opts), obj, visitors)
File “/opt/hqueue/lib/python2.5/site-packages/SQLAlchemy-0.5.1-py2.5.egg/sqlalchemy/sql/visitors.py”, line 194, in traverse_using
meth(target)
File “/opt/hqueue/lib/python2.5/site-packages/SQLAlchemy-0.5.1-py2.5.egg/sqlalchemy/sql/compiler.py”, line 962, in visit_metadata
collection =
File “/opt/hqueue/lib/python2.5/site-packages/SQLAlchemy-0.5.1-py2.5.egg/sqlalchemy/sql/compiler.py”, line 973, in _can_drop
return not self.checkfirst or self.dialect.has_table(self.connection, table.name, schema=table.schema)
File “/opt/hqueue/lib/python2.5/site-packages/SQLAlchemy-0.5.1-py2.5.egg/sqlalchemy/databases/mysql.py”, line 1607, in has_table
rs = connection.execute(st)
File “/opt/hqueue/lib/python2.5/site-packages/SQLAlchemy-0.5.1-py2.5.egg/sqlalchemy/engine/base.py”, line 824, in execute
return Connection.executors(self, object, multiparams, params)
File “/opt/hqueue/lib/python2.5/site-packages/SQLAlchemy-0.5.1-py2.5.egg/sqlalchemy/engine/base.py”, line 888, in _execute_text
return self.__execute_context(context)
File “/opt/hqueue/lib/python2.5/site-packages/SQLAlchemy-0.5.1-py2.5.egg/sqlalchemy/engine/base.py”, line 896, in __execute_context
self._cursor_execute(context.cursor, context.statement, context.parameters, context=context)
File “/opt/hqueue/lib/python2.5/site-packages/SQLAlchemy-0.5.1-py2.5.egg/sqlalchemy/engine/base.py”, line 950, in _cursor_execute
self._handle_dbapi_exception(e, statement, parameters, cursor, context)
File “/opt/hqueue/lib/python2.5/site-packages/SQLAlchemy-0.5.1-py2.5.egg/sqlalchemy/engine/base.py”, line 931, in _handle_dbapi_exception
raise exc.DBAPIError.instance(statement, parameters, e, connection_invalidated=is_disconnect)
sqlalchemy.exc.ProgrammingError: (ProgrammingError) (1146, “Table ‘hqserver.client_errors’ doesn't exist”) ‘DESCRIBE `client_errors`’ ()
ERROR: Could not setup HQueue application.
Exiting installer…
thanks!
“Table ‘hqserver.client_errors’ doesn't exist” - I checked, it does not exist in the db.
Any ideas?
…successfully created the ‘hqserver’ database.
Starting HQueue…
Traceback (most recent call last):
File “./bin/paster”, line 8, in <module>
load_entry_point('PasteScript==1.7.3', ‘console_scripts’, ‘paster’)()
File “/opt/hqueue/lib/python2.5/site-packages/PasteScript-1.7.3-py2.5.egg/paste/script/command.py”, line 84, in run
invoke(command, command_name, options, args)
File “/opt/hqueue/lib/python2.5/site-packages/PasteScript-1.7.3-py2.5.egg/paste/script/command.py”, line 123, in invoke
exit_code = runner.run(args)
File “/opt/hqueue/lib/python2.5/site-packages/PasteScript-1.7.3-py2.5.egg/paste/script/appinstall.py”, line 68, in run
return super(AbstractInstallCommand, self).run(new_args)
File “/opt/hqueue/lib/python2.5/site-packages/PasteScript-1.7.3-py2.5.egg/paste/script/command.py”, line 218, in run
result = self.command()
File “/opt/hqueue/lib/python2.5/site-packages/PasteScript-1.7.3-py2.5.egg/paste/script/appinstall.py”, line 456, in command
self, config_file, section, self.sysconfig_install_vars(installer))
File “/opt/hqueue/lib/python2.5/site-packages/PasteScript-1.7.3-py2.5.egg/paste/script/appinstall.py”, line 600, in setup_config
mod.setup_config(command, filename, section, vars)
File “<stdin>”, line 24, in setup_config
File “/opt/hqueue/lib/python2.5/site-packages/SQLAlchemy-0.5.1-py2.5.egg/sqlalchemy/schema.py”, line 1792, in drop_all
bind.drop(self, checkfirst=checkfirst, tables=tables)
File “/opt/hqueue/lib/python2.5/site-packages/SQLAlchemy-0.5.1-py2.5.egg/sqlalchemy/engine/base.py”, line 1134, in drop
self._run_visitor(self.dialect.schemadropper, entity, connection=connection, **kwargs)
File “/opt/hqueue/lib/python2.5/site-packages/SQLAlchemy-0.5.1-py2.5.egg/sqlalchemy/engine/base.py”, line 1158, in _run_visitor
visitorcallable(self.dialect, conn, **kwargs).traverse(element)
File “/opt/hqueue/lib/python2.5/site-packages/SQLAlchemy-0.5.1-py2.5.egg/sqlalchemy/sql/visitors.py”, line 89, in traverse
return traverse(obj, self.__traverse_options__, self._visitor_dict)
File “/opt/hqueue/lib/python2.5/site-packages/SQLAlchemy-0.5.1-py2.5.egg/sqlalchemy/sql/visitors.py”, line 200, in traverse
return traverse_using(iterate(obj, opts), obj, visitors)
File “/opt/hqueue/lib/python2.5/site-packages/SQLAlchemy-0.5.1-py2.5.egg/sqlalchemy/sql/visitors.py”, line 194, in traverse_using
meth(target)
File “/opt/hqueue/lib/python2.5/site-packages/SQLAlchemy-0.5.1-py2.5.egg/sqlalchemy/sql/compiler.py”, line 962, in visit_metadata
collection =
File “/opt/hqueue/lib/python2.5/site-packages/SQLAlchemy-0.5.1-py2.5.egg/sqlalchemy/sql/compiler.py”, line 973, in _can_drop
return not self.checkfirst or self.dialect.has_table(self.connection, table.name, schema=table.schema)
File “/opt/hqueue/lib/python2.5/site-packages/SQLAlchemy-0.5.1-py2.5.egg/sqlalchemy/databases/mysql.py”, line 1607, in has_table
rs = connection.execute(st)
File “/opt/hqueue/lib/python2.5/site-packages/SQLAlchemy-0.5.1-py2.5.egg/sqlalchemy/engine/base.py”, line 824, in execute
return Connection.executors(self, object, multiparams, params)
File “/opt/hqueue/lib/python2.5/site-packages/SQLAlchemy-0.5.1-py2.5.egg/sqlalchemy/engine/base.py”, line 888, in _execute_text
return self.__execute_context(context)
File “/opt/hqueue/lib/python2.5/site-packages/SQLAlchemy-0.5.1-py2.5.egg/sqlalchemy/engine/base.py”, line 896, in __execute_context
self._cursor_execute(context.cursor, context.statement, context.parameters, context=context)
File “/opt/hqueue/lib/python2.5/site-packages/SQLAlchemy-0.5.1-py2.5.egg/sqlalchemy/engine/base.py”, line 950, in _cursor_execute
self._handle_dbapi_exception(e, statement, parameters, cursor, context)
File “/opt/hqueue/lib/python2.5/site-packages/SQLAlchemy-0.5.1-py2.5.egg/sqlalchemy/engine/base.py”, line 931, in _handle_dbapi_exception
raise exc.DBAPIError.instance(statement, parameters, e, connection_invalidated=is_disconnect)
sqlalchemy.exc.ProgrammingError: (ProgrammingError) (1146, “Table ‘hqserver.client_errors’ doesn't exist”) ‘DESCRIBE `client_errors`’ ()
ERROR: Could not setup HQueue application.
Exiting installer…
thanks!
Technical Discussion » HDK: threading FOR_ALL_GPOINTS
- burnie
- 23 posts
- Offline
Nice, that's really simple!
Thanks a bunch!
edit: looked at the macros in UT_ThreadedAlgorithm.h, they really make life easier
Thanks a bunch!
edit: looked at the macros in UT_ThreadedAlgorithm.h, they really make life easier
Technical Discussion » HDK: threading FOR_ALL_GPOINTS
- burnie
- 23 posts
- Offline
Hi,
Usually we do something like this when updating geometry.
FOR_ALL_GPOINTS(gdp, ppt)
{
UT_Vector4& p = ppt->getPos();
//do some magic with p…..
}
Which of course is really slow in the case of the gdp being large.
My question is, is there a better (faster) way of updating the points? Perhaps a way to use multithreading, which in this case would be several loops each in its own thread going through individual parts of the gdp. Just simple threading of a loop (where iterations are independent of each other) in other words….
How can this be done using HDK? If there is nothing built in, then I’m just interested in how to split up “FOR_ALL_GPOINTS” into several smaller parts and I can do the threading myself.
Thanks!
Usually we do something like this when updating geometry.
FOR_ALL_GPOINTS(gdp, ppt)
{
UT_Vector4& p = ppt->getPos();
//do some magic with p…..
}
Which of course is really slow in the case of the gdp being large.
My question is, is there a better (faster) way of updating the points? Perhaps a way to use multithreading, which in this case would be several loops each in its own thread going through individual parts of the gdp. Just simple threading of a loop (where iterations are independent of each other) in other words….
How can this be done using HDK? If there is nothing built in, then I’m just interested in how to split up “FOR_ALL_GPOINTS” into several smaller parts and I can do the threading myself.
Thanks!
Technical Discussion » subdivision using distance to camera
- burnie
- 23 posts
- Offline
Thanks for the quick reply and also for the example.
Do you know if it's possibly to do it the other way around? I would like a Sop like reduce which splits polygons based on distance to the camera. Otherwise I have to create a huge mesh and the reduce it which is not very efficient.
Do you know if it's possibly to do it the other way around? I would like a Sop like reduce which splits polygons based on distance to the camera. Otherwise I have to create a huge mesh and the reduce it which is not very efficient.
Technical Discussion » subdivision using distance to camera
- burnie
- 23 posts
- Offline
I'm looking for something similar to ROAM (Realtime Optimally-Adapting Meshes) in houdini.
Is it possible to perform subdivision on a mesh-grid based on distance to the camera using a Sop, or do I need to write my own code for that?
Thanks.
Is it possible to perform subdivision on a mesh-grid based on distance to the camera using a Sop, or do I need to write my own code for that?
Thanks.
Technical Discussion » Python script: syntax error in <stdin>.
- burnie
- 23 posts
- Offline
Technical Discussion » difference between hython and python?
- burnie
- 23 posts
- Offline
Technical Discussion » difference between hython and python?
- burnie
- 23 posts
- Offline
thanks for the response, but I'm importing hou… that's when I get the errors.
Basically this has nothing to do with my hip-file, instead the actual problem is when loading houdini using “import hou” which then makes houdini load all digital assets. There is nothing wrong with the assets as they work when using hython or the houdini application.
Hython must be doing something that I'm not aware of…
Basically this has nothing to do with my hip-file, instead the actual problem is when loading houdini using “import hou” which then makes houdini load all digital assets. There is nothing wrong with the assets as they work when using hython or the houdini application.
Hython must be doing something that I'm not aware of…
Technical Discussion » difference between hython and python?
- burnie
- 23 posts
- Offline
Hi, I' wondering what the difference between hython and python is.
I can load hip-files that use custom built dso:s with hython but not with python.
Hython:
using hython I write….
hou.hipFile.load(“myhipfile.hip”)
which makes the file load successfully.
Python:
using python I write….
import sys, os
sys.path.append(“/opt/hfs9.5.170/houdini/scripts/python”)
import hou //this is where I get the errors
hou.hipFile.load(“myhipfile.hip”)
then I get DSO errors:
“_ZNK7OP_Node11getFullPathER9UT_String” for Sops
and
_ZN7UT_LockC1Ebb for Vops
why is this, do I need to load anything else when using python before calling “import hou”?
Thanks!
I can load hip-files that use custom built dso:s with hython but not with python.
Hython:
using hython I write….
hou.hipFile.load(“myhipfile.hip”)
which makes the file load successfully.
Python:
using python I write….
import sys, os
sys.path.append(“/opt/hfs9.5.170/houdini/scripts/python”)
import hou //this is where I get the errors
hou.hipFile.load(“myhipfile.hip”)
then I get DSO errors:
“_ZNK7OP_Node11getFullPathER9UT_String” for Sops
and
_ZN7UT_LockC1Ebb for Vops
why is this, do I need to load anything else when using python before calling “import hou”?
Thanks!
Edited by - Nov. 8, 2008 12:17:25
Technical Discussion » file path to current hip-file
- burnie
- 23 posts
- Offline
Technical Discussion » file path to current hip-file
- burnie
- 23 posts
- Offline
I'm creating a Sop using HDK and would like to load and save my own files containing simulation data using standard fstream. The problem is the path where the files are saved. If I output a file named foo.data it will end up in the directory from where i started houdini (if started from a shell). This is a problem when doing batch-renderings and I would instead like to know the path to the hip-file I'm currently working in (sim data would then always be written and and loaded from the same dir as the hip-file).
$HIP gives this path, but sometimes we have problems with $HIP and I'm therefore wondering if there is another way to get this path with C++ code inside a Sop, like a global with the currently open file path.
Thanks.
$HIP gives this path, but sometimes we have problems with $HIP and I'm therefore wondering if there is another way to get this path with C++ code inside a Sop, like a global with the currently open file path.
Thanks.
Technical Discussion » HDK - Sop several separated inputs
- burnie
- 23 posts
- Offline
Thanks for the reply.
What I was looking for is a way to create a Sop with two input-boxes, one that takes one single input and another that takes an arbitrary number of other inputs.
The idea is to have a grid as the single input (which will be displaced in the Sop), and use the other inputs to calculate the actual displacements. I sent an email to support and found out that this is apparently not possible. It's only possible to do it the way Gerome described.
I guess instead I'll have to label the inputs somehow to know which one is the grid and which others are standard geometry. Any ideas on how to do this in a smart way?
What I was looking for is a way to create a Sop with two input-boxes, one that takes one single input and another that takes an arbitrary number of other inputs.
The idea is to have a grid as the single input (which will be displaced in the Sop), and use the other inputs to calculate the actual displacements. I sent an email to support and found out that this is apparently not possible. It's only possible to do it the way Gerome described.
I guess instead I'll have to label the inputs somehow to know which one is the grid and which others are standard geometry. Any ideas on how to do this in a smart way?
Technical Discussion » Point clouds - howto needed
- burnie
- 23 posts
- Offline
I would like to learn how to create and use point clouds. But I can't find any howtos.
Is it possible to build a custom Sop which creates a point cloud containing arbitrary information and then read that cloud in a shader using a custom Vop?
Any help is appreciated, and since I'm very new at this, code examples are also very useful.
Thanks for any help.
Is it possible to build a custom Sop which creates a point cloud containing arbitrary information and then read that cloud in a shader using a custom Vop?
Any help is appreciated, and since I'm very new at this, code examples are also very useful.
Thanks for any help.
Technical Discussion » HDK - Sop several separated inputs
- burnie
- 23 posts
- Offline
Is it possible to create a SOP with inputs like Dop/gravity?
The idea is to separate the input geometry as one surface (which will be displaced inside the Sop) and
several other geometries which are used to calculate the displacement.
Thanks.
The idea is to separate the input geometry as one surface (which will be displaced inside the Sop) and
several other geometries which are used to calculate the displacement.
Thanks.
-
- Quick Links