Forgot your password?   Click here   •   No account yet?   Please Register    •   Or login using  
JA ログイン
SideFX Homepage
  • 製品
    • H20.5 新機能
      • 概要
      • VFX
      • Copernicus
      • Animation
      • Rigging
      • Lookdev
    • Houdini
      • 概要
      • FX 機能
      • CORE 機能
      • Solaris
      • PDG
    • Houdini Engine
      • 概要
      • Engine プラグイン
      • バッチ処理
    • Karma Renderer
    • 製品比較
    • SideFX Labs
    • Partners
  • 業界
    • Film & TV
    • ゲーム開発
    • モーショングラフィクス
    • Virtual Reality
    • AI/ML 向けデータ合成
  • コミュニティ
    • フォーラム
    • ニュース
      • 概要
      • カスタマ ストーリー
      • Houdini HIVE Events
      • Contests & Jams
    • Gallery
    • イベントカレンダー
    • User Groups
    • Artist Directory
  • 学習
    • Start Here
      • 概要
      • My Learning
      • ラーニングパス
      • チュートリアル
    • コンテンツライブラリ
    • Tech Demos
    • Houdini 講演
    • 教育プログラム
      • 概要
      • 学生
      • 講師
      • 管理者
      • List of Schools
      • 学習リソース
  • サポート
    • カスタマーサポート
    • Licensing
      • 概要
      • Commercial
      • Indie
      • Education
    • ヘルプデスク FAQ
    • Houdini システム環境
    • ドキュメント
    • Changelog / Journal
    • Report a Bug/RFE
  • Get
    • Try
    • 購入
    • ダウンロード
    • お問い合わせ
 
Advanced Search
Forums 検索
Found 1723 posts.

Search results Show results as topic list.

Houdini Indie and Apprentice » Help with connecting lines by nearest distance

User Avatar
animatrix_
4996 posts
Online
 今日 03:31:45
Hi,

You can use pcfind in VEX to find the nearest point from each circle, sort by distance, and connect the closest points using addprim.



Nearest pt (Point Wrangle):

int pts [ ] = pcfind ( 1, "P", @P, ch("radius"), chi("maxpts") );
i@nearpt = pts [ -1 ];

vector p = point ( 1, "P", i@nearpt );
@dist = distance2 ( @P, p );

Create Line (Detail Wrangle):

vector p0 = point ( 1, "P", 0 );
vector p1 = point ( 2, "P", 0 );

int pt0 = addpoint ( 0, p0 );
int pt1 = addpoint ( 0, p1 );

addprim ( 0, "polyline", pt0, pt1 );
See full post 

Work in Progress » C++ Wrangle: The Last Frontier In Custom Tool Development From Within Houdini

User Avatar
animatrix_
4996 posts
Online
 2025年7月12日 12:10:43
Umang_Raj
animatrix_
Rusoloco73
Why in the name of Jesus this thing its not in Houdini by default

I have an RFE from 9 years ago at the time of the creation of this node: #36356. Please bump it up so SESI can add this to H21

Implementing this would require shipping Houdini with C++ compilers, which may be one reason it's still missing, but I think it's absolutely worth it.
isn't it already available with inlinecpp?

You still need to install the right version of MSVC and the Windows SDK (on Windows, for example), so it's not exactly plug-and-play.
See full post 

Work in Progress » C++ Wrangle: The Last Frontier In Custom Tool Development From Within Houdini

User Avatar
animatrix_
4996 posts
Online
 2025年7月11日 03:03:57
Rusoloco73
Why in the name of Jesus this thing its not in Houdini by default

I have an RFE from 9 years ago at the time of the creation of this node: #36356. Please bump it up so SESI can add this to H21

Implementing this would require shipping Houdini with C++ compilers, which may be one reason it's still missing, but I think it's absolutely worth it.
See full post 

Technical Discussion » How to procedurally slide edges?

User Avatar
animatrix_
4996 posts
Online
 2025年7月10日 15:35:36
Hi,

Here is one way using Python (before VEX had half edges). Just add a group (string) and amount (float ) parameters.

node = hou.pwd ( )
geo = node.geometry ( )

def filterEdgeGroup ( edgeGroup ):
    group = []
    names = edgeGroup.split ( ' ' )
    for name in names:
        try:
            edges = geo.globEdges ( name )
        except hou.OperationFailed:
            edges = ( )
        
        for edge in edges:
            p0 = edge.points ( ) [ 0 ]
            p1 = edge.points ( ) [ 1 ]
            
            try:
                isValidEdge = geo.findEdge ( p0, p1 )
            except:
                isValidEdge = False
            
            if not isValidEdge:
                continue
            
            if len ( edge.prims ( ) ):
                group.append ( edge )
    
    return group


def getPolysFromEdges ( edges ):
    polys = []
    for edge in edges:
        polys += edge.prims ( )
    
    return polys


def getPointsFromEdges ( edges ):
    points = set ( )
    for edge in edges:
        points.add ( edge.points ( ) [ 0 ] )
        points.add ( edge.points ( ) [ 1 ] )
    
    return points


def getPointsFromPolys ( polys ):
    points = set ( )
    for poly in polys:
        verts = poly.vertices ( )
        for vert in verts:
            points.add ( vert.point ( ) )
    
    return points


def isValidEdge ( point1, point2 ):
    try:
        group = geo.globEdges ( "p{0}-{1} ".format ( point1, point2 ) )
    except hou.OperationFailed:
        return False
    
    for edge in group:
        p0 = edge.points ( ) [ 0 ]
        p1 = edge.points ( ) [ 1 ]
        
        try:
            return geo.findEdge ( p0, p1 ) != None
        except:
            return False


def getEdgePointsOfPoint ( point ):
    points = hou.hscriptExpression ( "pointneighbours(\"" + node.inputs ( ) [ 0 ].path ( ) + "\", " + str ( point ) + ", 1)" )
    points = points.split ( ' ' )
    points = map ( int, points )
    edgePoints = set ( )
    for pt in points:
        if isValidEdge ( point, pt ):
            edgePoints.add ( geo.iterPoints ( ) [ pt ] )
    
    return edgePoints



group = hou.evalParm ( "group" )
amount = hou.evalParm ( "amount" )
edges = filterEdgeGroup ( group )

if not edges:
    raise hou.NodeWarning ( "No valid edges were found in the group." )

polys = getPolysFromEdges ( edges )
points = getPointsFromEdges ( edges )
outerPoints = getPointsFromPolys ( polys )
outerPoints -= points

if not outerPoints:
    raise hou.NodeWarning ( "No valid edges were found in the group." )

first = outerPoints.pop ( )
source = { first }
innerPoints = { first }

while source:
    edgePoints = getEdgePointsOfPoint ( source.pop ( ).number ( ) )
    shared = edgePoints.intersection ( outerPoints )
    source = source.union ( shared )
    innerPoints = innerPoints.union ( shared )
    outerPoints = outerPoints.difference ( edgePoints )

goals = outerPoints
if ( amount < 0 ):
    goals = innerPoints

for point in points:
    edgePoints = getEdgePointsOfPoint ( point.number ( ) )
    target = edgePoints.intersection ( goals )
    if target:
        p0 = target.pop ( ).position ( )
        p1 = point.position ( )
        point.setPosition ( p1 + ( p0 - p1 ) * abs ( amount ) )

See full post 

Houdini Indie and Apprentice » Help with finding point in the middle of a grid space

User Avatar
animatrix_
4996 posts
Online
 2025年7月10日 02:42:44
Hi,

You can scatter points inside the shape and use a Ray SOP with "Minimum Distance" mode to get distance to the walls. Make sure the second input is an open polyline version of the boundary. I used a Convert Line SOP but you can use Ends SOP too. Also disable "Transform Points" so they stay in place, and you just get the distance.

Then sort by distance and keep the point with the max distance: that's where the biggest circle fits.

See full post 

3rd Party » Supercharged H20 extension (TouchDesigner Style)

User Avatar
animatrix_
4996 posts
Online
 2025年7月9日 07:40:02
bskochii
Hi Yunus,

I had to re-install my Houdini and every addon I have, and for some reason I don't have clearParameterEditor shelf tool. Meaning I can append to parameter editor, but can't clean it up. I thought I somehow deleted it, but I downloaded the archive from Gumroad, and can't see it there either
Image Not Found

Hi,

I don't see it also. I think I just bind the function to one of the hotkeys inside hotkeys.csv before so you can either do that using the clearParameterEditor function from utility_ui module or just add this to the supercharge.shelf file until I push the next version for H21:

<tool name="clearParameterEditor" label="Clear Parameter Editor" icon="SHELF_convert_to_fluid">
<script scriptType="python"><![CDATA[
from utility_ui import clearParameterEditor
clearParameterEditor()
]]></script>
</tool>
See full post 

Technical Discussion » 'NetworkEditor' object has no attribute 'multiParmTab'

User Avatar
animatrix_
4996 posts
Online
 2025年6月30日 02:10:33
Hi,

It's a bug you should report here [www.sidefx.com].
See full post 

Houdini Lounge » Is there GUI to edit 3DSceneColors files?

User Avatar
animatrix_
4996 posts
Online
 2025年6月16日 08:02:40
Hi,

There is no GUI but you can use the Reload function to reload the colors:


Alterntively you can do it using the Python HOM:
hou.ui.reloadColorScheme() [www.sidefx.com]
See full post 

Houdini Learning Materials » Pragmatic VEX: Volume 1 [4K] [H20]

User Avatar
animatrix_
4996 posts
Online
 2025年6月16日 06:58:26
See full post 

Technical Discussion » How can I rotate an object to one of two specific rotations?

User Avatar
animatrix_
4996 posts
Online
 2025年6月12日 04:44:45
Hi,

There are many ways to do this. Here is one way using VEX:

float r = rand ( @ptnum );
float angles [ ] = array ( 0, 180 );
float angle = radians ( angles [ r > 0.5 ] );

p@orient = quaternion ( angle, set ( 0,1,0 ) );



The full list of supported instance attributes like orient, pscale, etc. is here:
https://www.sidefx.com/docs/houdini/copy/instanceattrs [www.sidefx.com]
That doc breaks down what each one does when using Copy to Points.
See full post 

Houdini Learning Materials » Pragmatic VEX: Volume 1 [4K] [H20]

User Avatar
animatrix_
4996 posts
Online
 2025年6月6日 04:33:58
See full post 

Technical Discussion » Problems with H19-20 window (maximize, full-screen)

User Avatar
animatrix_
4996 posts
Online
 2025年6月3日 04:28:35
Just wanted to share a fullscreen fix I came up with while working on my Houdini Supercharged extension with the overlay network editor. I needed something that works cleanly on all setups — Qt5, Qt6, Intel GPUs, multi-monitor — without the flickering or blank screen some people get when going fullscreen.

The old trick of resizing the window to be slightly bigger than the screen (+1 pixel) works in Qt5 but completely breaks in Qt6, where it clamps the size to screen bounds. Instead of fighting that, I found a cleaner way: just add a 1px invisible margin to the contents. That's enough to stop the compositor from treating it as a "true fullscreen" window, which is what usually causes the flicker or blanking.

I've tested it on both Qt versions and haven’t had any issues since switching to this method. Code is below in case it helps anyone dealing with the same problem.

def fullscreenSession():
    window = hou.qt.mainWindow()

    def customShowFullScreen():
        screen = window.screen().geometry()

        if not hasattr(window, "_orig_geom"):
            window._orig_geom = window.geometry()

        window.hide()
        window.setWindowFlags(QtCore.Qt.FramelessWindowHint)

        window.show()
        QtWidgets.QApplication.processEvents()

        window.move(screen.x(), screen.y())
        window.resize(screen.width(), screen.height())

        # Cleaner alternative to +1 pixel trick
        window.setContentsMargins(0, 0, 1, 1)
        window.setFixedSize(screen.width(), screen.height())

        QtWidgets.QApplication.processEvents()
        window.raise_()
        window.activateWindow()
        window.repaint()

    def customExitFullScreen():
        ORIGINAL_WINDOW_FLAGS = QtCore.Qt.WindowType(167833601)

        window.hide()
        window.setWindowFlags(ORIGINAL_WINDOW_FLAGS)

        if hasattr(window, "_orig_geom"):
            window.setGeometry(window._orig_geom)
            del window._orig_geom

        window.setMinimumSize(0, 0)
        window.setMaximumSize(16777215, 16777215)

        window.show()
        QtWidgets.QApplication.processEvents()
        window.raise_()
        window.activateWindow()

    if window.windowFlags() & QtCore.Qt.FramelessWindowHint:
        customExitFullScreen()
        window.showMaximized()
        hou.ui.setHideAllMinimizedStowbars(False)
    else:
        for pane in hou.ui.panes():
            pane.setShowPaneTabs(False)

        customShowFullScreen()
        hou.ui.setHideAllMinimizedStowbars(True)
See full post 

Houdini Indie and Apprentice » How to enter fully clean full screen mode in scene view?

User Avatar
animatrix_
4996 posts
Online
 2025年6月3日 04:11:21
bashorton
animatrix_
I think that can't be hidden unless you buy a full FX license. Only the FX license has no text there.
Thanks. I thought that might be the case

Just for completeness I bet you could add some widget on top that blurs that part, making it essentially invisible.
See full post 

Houdini Indie and Apprentice » circle align

User Avatar
animatrix_
4996 posts
Online
 2025年5月27日 12:59:17
Hi,

You can do it using Circle from Edges SOP:

See full post 

Houdini Indie and Apprentice » How can I do this procedurally (select and shrink loop)

User Avatar
animatrix_
4996 posts
Online
 2025年5月26日 12:54:21
Fordencore1966
Mike_A
id you download the file attach


Hi

I have partly the same task - how to procedurally select this outer edge?


Your text to link here... [limewire.com]

You can do it using the Group Create SOP:

See full post 

Houdini Lounge » Force nodes to not cook when selected ?

User Avatar
animatrix_
4996 posts
Online
 2025年5月24日 02:52:33
bunker__
Just re-installed Houdini recently, I thought the cooking was broken :o
Can "Show Display Operator" be the default?
Selecting a node to move it or edit parameters doesn't mean you want to cook it.
or maybe it's just me?
And you have to restart Houdini for that cooking behaviour to change. not super intuitive.

I totally agree — I’ve brought this up multiple times in beta programs and filed RFEs (#74849: 9 years old). To me, selection and cooking should be two completely separate operations. Most of the time, it doesn’t even make sense to cook selected nodes. For example, if you select multiple nodes, what are you supposed to see? Nothing actually appears in the viewport. Same with volumes — if the display flag is off, you see absolutely nothing, yet you're still forced to wait for the node to cook.

Even the current “Show Display Operator” setting is broken IMO. If you're in a tool mode where guides need to be shown, then yes, it should cook. But right now it doesn't, which breaks that workflow too.

Ideally, there should just be one smart mode that does the right thing based on context — display when it matters, stay idle when it doesn't.
See full post 

Technical Discussion » Trying to Push a VDB Cloud Shape Using an SDF Ripple Field

User Avatar
animatrix_
4996 posts
Online
 2025年5月19日 05:17:15
Hi,

You need to merge all the fields you intend to modify before applying any changes.

In the VDB Advect SOP, make sure to explicitly select the velocity field you want to use.

Inside the Volume VOP, you're using a fit with both source values set to 0, which will always return 0.

Also, keep in mind that the order of operations matters in VOPs, especially when mixing floats and vectors. You were multiplying a float by a vector and getting a float as a result, then plugging that into a vector field—this will just repeat the float across all components.

Lastly, if you're sampling from a field at the current position, you can just use a Bind VOP instead of using Volume Sample VOPs.



See full post 

Houdini Indie and Apprentice » Attribute Blend Node?

User Avatar
animatrix_
4996 posts
Online
 2025年5月18日 08:36:46
Hi,

You can use Blend Shapes SOP but you have to store @P.y in an attribute first.
See full post 

Houdini Learning Materials » Pragmatic VEX: Volume 1 [4K] [H20]

User Avatar
animatrix_
4996 posts
Online
 2025年5月16日 03:27:30
See full post 

Houdini Learning Materials » Pragmatic VEX: Volume 1 [4K] [H20]

User Avatar
animatrix_
4996 posts
Online
 2025年5月7日 03:37:40
See full post 
  • 最初
  • 1
  • 2
  • 3
  • 4
  • 最後
  • Quick Links
Search links
Show recent posts
Show unanswered posts
製品
  • Houdini
  • Houdini Engine
  • Houdini Indie
学習
  • Houdini 講演
  • 教育プログラム
サポート
  • カスタマーサポート
  • ヘルプデスク FAQ
  • ドキュメント
  • Report a Bug/RFE
LEGAL
  • Terms of Use (英語)
  • Privacy Policy (英語)
  • License Agreement (英語)
  • Accessibility (英語)
  • Responsible Disclosure Program
COMPANY
  • SideFX社について
  • Careers
  • Press
  • Internships
  • お問い合わせ
Copyright © SideFX 2025. All Rights Reserved.

使用言語