Jump to content


Popular Content

Showing most liked content on 07/11/2020 in all areas

  1. 2 points
    My latest reel, 2020. Collection of shows 2016-2019.
  2. 2 points
    You are welcome. Submitting RFEs doesn't hurt. C++ implementation is still much faster than laspy, but it's possible to do an easy and quick specific modification for las import until LIDAR Import SOP gets some improvements without going the C++ route. I attached an example with adding classification as an attribute (added closing the las file to avoid memory issues). I added an updated file: pz_load_las_with_python_classification_attribute_memory_fix.hipnc as it looks like context management protocol is not implemented in laspy (with File(): block will not close the file at exit) so I switched to try/except/finally instead. It will not error on the node, so watch python console for exception logging.
  3. 2 points
    The classification works fine. But with inFile = inFile.points[I] you are overwriting inFile object with multi-dimensional arrays of all attributes so you no longer get them by .x/.y/.z or other named properties. I uploaded a modified scene, where you can set classification and then it returns only a subset of points that match the correct classification. inFile.points[I] Returns subset of points in an array where I is True inFile.Classification == 2 Returns array of True/False values to determine which points are classified with id 2. Another approach would be adding Classification as an attribute to all points and then use vex expressions, groups, or other partitioning mechanisms to separate points. pz_load_las_with_python_classification.hipnc
  4. 2 points
    Hi, pretty neat library! Thank you for the tip. There is no need for csv, you can do a lot with laspy and numpy itself. Attached example scene to load data from las file. Seems that Lidar Import SOP ignores scale and offset. To make it work (18.0.499, Python 2.7 branch) I cloned the https://github.com/laspy/laspy repository. Then copied content of laspy folder to $HOME/Houdini18.0/python2.7libs/laspy so I have $HOME/houdini18.0/python2.7libs/laspy/__init__.py (and rest of the library) and it's possible to load it into Houdini with import laspy in Python shell. (Numpy is already included with Houdini) I used example file from repository: https://github.com/laspy/laspy/blob/master/laspytest/data/simple.las import logging from laspy.file import File import numpy as np node = hou.pwd() geo = node.geometry() file_path = geo.attribValue("file_path") inFile = File(file_path, mode='r') try: # --- load point position coords = np.vstack((inFile.X, inFile.Y, inFile.Z)).transpose() scale = np.array(inFile.header.scale) offset = np.array(inFile.header.offset) # there is no offset in simple.las example from laspy library # offset = np.array([1000, 20000, 100000]) # just for testing that offset works # geo.setPointFloatAttribValues("P", np.concatenate(coords)) # same as Lidar Import SOP - seems that it ignores scale (and offset?) geo.setPointFloatAttribValues("P", np.concatenate(coords*scale+offset)) # --- load color color = np.vstack((inFile.red, inFile.green, inFile.blue)).transpose() geo.addAttrib(hou.attribType.Point, "Cd", (1.0,1.0,1.0), False, False) # add color atttribute geo.setPointFloatAttribValues("Cd", np.concatenate(color / 255.0)) # transform from 1-255 to 0.0-1.0 range) except Exception: logging.exception("Processing lidar file failed") finally: inFile.close() pz_load_las_with_python.hipnc
  5. 1 point
    You could check out my Moon DEM Python reader. I believe those original NASA files were in a similar format.
  6. 1 point
    Your FX reel is really beautiful!!!
  7. 1 point
    here...all I can say the best thing about this so far is....it's bloody finicky !!! - in secret sauce, try disabling it...won't work....even fracture it with 1 fracture point, ie. no actual break, won't work...you have to do an actual dummy break with 2 points...must be something under the hood. after that, controls are at best.......finicky. vu_ballPuller.hiplc
  8. 1 point
    @vinyvince Not Point Vop !! OLD POINT SOP --just use that expr on black Color ..and in ChOps- wave and OUT(plus you have BILLION ways to do patterns )use limit : (and use chopf-chopi -chopt) depending on what you want ..THAN HAVE FUn ...And yes use HAVEFUN.hipnc Still I adjusting that file ...Having FUn -----LOve creature
  9. 1 point
    Hi everyone ! I have been working on a sparse pyro upres recently and did a video to test it. You can find the hda here : https://drive.google.com/drive/folders/1H4Y0HNELDJ6lmHsM43eEI_lRgNuCEaxX?usp=sharing More details about the solver : The sparse upres solver is a deeply modified sparse pyro that allow the user to quickly upres a smoke simulation from simple inputs. The core idea for the upres is to bypass every nodes related to velocity update in the smoke solver, like the project non divergent, vel advection, collision mask, ect. and replace the upres vel field by a copy of the low resolution velocity. One can then advect any dyes needed through that vel field to create an upres. In order to keep the pipeline as simple as possible i splitted the process in 2 nodes, a 'configure_inputs' which precompute some lowres fields and normalize inputs and the upres solver itself. The sparse solver needs to match the parameters of the lowres simulation to work properly (like dissipation, flame amount, temperature diffusion, ect.). To quickly set up the upres solver i added a python script, that copy and paste all relevant parameters of a lowres pyro to the upres solver. You just need to select which pyro solver to use as reference to match the parameters. The sparse solver itself has some simples parameters like noise / random that allow the user to inject details in the lowres vel field. Noises and randomness are stored on an separated field, 'noise', to be conserved through time since vel is simply copied from the lowres. That allow the noise field to be advected by the vel and then merge with it to advect other fields like density, flames, ect. Which create a more complex pattern than a noise directly merge with the vel. Color can be added at the upres stage if the source contains a Cd and Alpha volumes. Those fields will simply be advected by the upres solver like any other fields resulting in a colored smoke. Your lowres simulation needs no color. Retime can be perform by interpolating the source and scaling parts of the upres solver. The process is automated from a tab in the sparse solver. However, it can vary if you animate the retime or set it to low (especially with flame). The upres solver does not need any modification of the velocity other than small disturbance / turbulance details. If you add strong changes in the vel field your upres dye will deviate far away from the lowres vel field. Every major modifications of the vel field like wind or buoyancy need to be added in the lowres simulation. A fake divergence can be added through the process by computing the negative gradient of the density added to the velocity. Since pressure projection has been bypassed, important amount of this 'divergence' will result in compression in the vel field creating artefacts in the smoke. However, it can be usefull to break the sharp edges of an upres smoke if needed. At last, one can force the upres to match the lowres fields by simply removing parts of the simulation which are outside the lowres smoke by taking the lowres density field as reference. If the lowres is below a threshold value, the upres smoke is multiply by amount less than 1. This can be usefull is you have strong noises and need to dissipate them to stay in the bounds of the lowres.
  10. 1 point
    Finally finished this example that's been sitting on my backburner. It's a really simple demonstration of how you can use the Pose Tool and Pose Scopes to get invisible rigs and motion paths in Houdini. Has anyone used them in production, by chance? What's been your experience? Caveat: that hip file is definitely NOT an example of good rigging practice, by any means! Industrial Robot Arm by UX3D on Sketchfab (CC BY-NC 4.0) invisible_rigs_motion_paths.hipnc
  11. 1 point
    I put together this setup after watching the Ari Danish masterclass on height fields in Houdini 17. ap_hf_terrain_select_features_102618.hiplc This is the default Terrain: Hills, generated by the shelf tool, with a bunch of pre-made point selections sets all ready setup. Bedrock, sediment, water, debris, direction, occlusion, slope, flat areas and peak edges are provided. There is some custom masking taking place. For instance I did not want rocks from debris inside my water so I masked them out. The instancers, at the /obj level, reference these point sets to deploy various plant models. I have included the basic set of cc0 models consisting of 1 pine tree, 2 rocks and 11 grass meshes. When first opening the scene you may have to click the Reset Simulation button on the heightfielderode node to generate all the point sets. This should take a short amount of time to erode out 24 frames on the height field. You should be able to supply any of the height field shelf tools to the selection set input. Revisit the heightfieldmaskbyfeature node parameters to dial in the best point sets for your particular height field. Setup to render in Redshift.
  12. 1 point
    Hi all, I had been doing a rnd project on how to generate knitted garments in Houdini lately. And one my inspiration was from a project which was done by Psyop using Fabric engine and the other one is done by my friend Burak Demirci. Here are the links of them. http://fabricengine.com/case-studies/psyop-part-2/ https://www.artstation.com/artist/burakdemirci Some people asked to share my hip file and I was going to do it sooner but things were little busy for me. Here it is, I also put some sticky notes to explain the process better, hope it helps. Also this hip file is the identical file of the one that I created this video except the rendering nodes https://vimeo.com/163676773 .I think there are still some things that can be improved and maybe done in a better way. I would love to see people developing this system further. Cheers! Alican Görgeç knitRnD.zip
  13. 1 point
    In this setup I have changed the Gas Enforce Boundary velocity type from Rigid to Volume. I also added a 7% Gas Damp on the target. This seems to help quite a bit. The smoke is mostly staying where it is supposed to. ap_smoke_emit_ring_012118.hipnc With Gas Enforce Boundary working I can disable the Gas Damp to restore a more smokey look.
  14. 1 point
    Set "Local scaling" to "Use Local Feature Size" to have more accurate solidembed. In "box_object1" set "Division size" to 0.05 or less. Change substeps to default 4 and 2 for collision.
  15. 1 point
    I do keep adding links as I find things. Because I am just editing the first page, it does not count as a reply. Any additions I make don't trigger a bump to the top of the forum. So check back often!