HDK
Main Page
Related Pages
Modules
Namespaces
Classes
Files
Examples
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
HOM/SOP_HOMWaveInlinecpp.py
1
#
2
# Copyright (c) 2024
3
# Side Effects Software Inc. All rights reserved.
4
#
5
# Redistribution and use of Houdini Development Kit samples in source and
6
# binary forms, with or without modification, are permitted provided that the
7
# following conditions are met:
8
# 1. Redistributions of source code must retain the above copyright notice,
9
# this list of conditions and the following disclaimer.
10
# 2. The name of Side Effects Software may not be used to endorse or
11
# promote products derived from this software without specific prior
12
# written permission.
13
#
14
# THIS SOFTWARE IS PROVIDED BY SIDE EFFECTS SOFTWARE `AS IS' AND ANY EXPRESS
15
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
16
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
17
# NO EVENT SHALL SIDE EFFECTS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
18
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
19
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
20
# OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
21
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
22
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
23
# EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24
#
25
#----------------------------------------------------------------------------
26
# This SOP provides an example of a SOP implemented in Python that uses the
27
# inlinecpp module to speed it up with C++ embedded code. See also
28
# SOP_HOMWave.py for a pure-Python implementation, SOP_HOMWave.C for an all-C++
29
# implementation using the HOM C++ API and SOP_CPPWave.C for an all-C++
30
# implementation using the HDK C++ API.
31
#
32
33
"""This is the accelerated equivalent of SOP_HOMWave.py. It implements the
34
same SOP but runs approximately 40x faster.
35
36
To use this code,
37
1) In Houdini, choose File -> New Operator Type
38
2) Choose "Python Type"
39
3) Choose the network type as "Geometry Operator"
40
4) Paste this code in the "Code" tab of the type properties.
41
42
@see @ref HOM/SOP_HOMWave.py, @ref HOM/SOP_HOMWaveNumpy.py, @ref HOM/SOP_HOMWave.C, @ref SOP/SOP_CPPWave.C, @ref SOP/SOP_VEXWave.vfl
43
"""
44
45
import
inlinecpp
46
47
import
hou
48
49
inlinecpp.extendClass(
50
hou.Geometry,
"sop_homwave_code"
, function_sources=[
"""
51
void wave(GU_Detail *gdp, double f)
52
{
53
GA_Offset ptoff;
54
GA_FOR_ALL_PTOFF(gdp, ptoff)
55
{
56
UT_Vector3 pos = gdp->getPos3(ptoff);
57
pos.y() = sin(pos.x() * 0.2 + pos.z() * 0.3 + f);
58
gdp->setPos3(ptoff, pos);
59
}
60
}
61
"""
])
62
hou.pwd().geometry().wave(hou.frame() * 0.03)
63
Generated on Thu Mar 28 2024 03:44:59 for HDK by
1.8.6