Skip to content

Commit

Permalink
merge with latest dev
Browse files Browse the repository at this point in the history
  • Loading branch information
lilike-adsk committed Feb 5, 2024
2 parents 20047f0 + 6d54e8e commit c10f838
Show file tree
Hide file tree
Showing 15 changed files with 125 additions and 0 deletions.
1 change: 1 addition & 0 deletions test/lib/mayaUsd/render/mayaToHydra/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ set(INTERACTIVE_TEST_SCRIPT_FILES
testStandardSurface.py
testFlowViewportAPI.py
testStageVariants.py
testNurbsPrimitives.py
cpp/testColorPreferences.py
cpp/testCppFramework.py
cpp/testMayaSceneFlattening.py
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
112 changes: 112 additions & 0 deletions test/lib/mayaUsd/render/mayaToHydra/testNurbsPrimitives.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
# Copyright 2024 Autodesk
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
import maya.cmds as cmds
import fixturesUtils
import mtohUtils

class TestNurbsPrimitives(mtohUtils.MtohTestCase):
# MayaHydraBaseTestCase.setUpClass requirement.
_file = __file__

IMAGE_DIFF_FAIL_THRESHOLD = 0.1
IMAGE_DIFF_FAIL_PERCENT = 0.75

def compareSnapshot(self, referenceFilename, cameraDistance=10):
self.setBasicCam(cameraDistance)
cmds.refresh()
self.assertSnapshotClose(referenceFilename, self.IMAGE_DIFF_FAIL_THRESHOLD, self.IMAGE_DIFF_FAIL_PERCENT)

def setupScene(self, nurbsCreationCallable):
self.setHdStormRenderer()
makeNurbNodeName = nurbsCreationCallable()[1]
cmds.refresh()
return makeNurbNodeName

# Torus attributes is a superset of sphere, cone, and cylinder attributes
def test_NurbsTorus(self):
makeNurbNodeName = self.setupScene(cmds.torus)
self.compareSnapshot("torus_fresh.png", 5)

cmds.setAttr(makeNurbNodeName + ".startSweep", 50)
cmds.setAttr(makeNurbNodeName + ".endSweep", 300)
cmds.setAttr(makeNurbNodeName + ".radius", 2)
cmds.setAttr(makeNurbNodeName + ".degree", 1)
cmds.setAttr(makeNurbNodeName + ".sections", 12)
cmds.setAttr(makeNurbNodeName + ".spans", 6)
cmds.setAttr(makeNurbNodeName + ".heightRatio", 0.8)
cmds.setAttr(makeNurbNodeName + ".minorSweep", 250)
self.compareSnapshot("torus_modified.png")

cmds.setAttr(makeNurbNodeName + ".useTolerance", True)
cmds.setAttr(makeNurbNodeName + ".tolerance", 0.05)
self.compareSnapshot("torus_tolerance.png")

# Cube attributes is a superset of plane attributes
def test_NurbsCube(self):
makeNurbNodeName = self.setupScene(cmds.nurbsCube)
self.compareSnapshot("cube_fresh.png", 5)

cmds.setAttr(makeNurbNodeName + ".degree", 1)
cmds.setAttr(makeNurbNodeName + ".patchesU", 2)
cmds.setAttr(makeNurbNodeName + ".patchesV", 3)
cmds.setAttr(makeNurbNodeName + ".width", 4)
cmds.setAttr(makeNurbNodeName + ".lengthRatio", 2)
cmds.setAttr(makeNurbNodeName + ".heightRatio", 3)
self.compareSnapshot("cube_modified.png")

def test_NurbsCircle(self):
makeNurbNodeName = self.setupScene(cmds.circle)
self.compareSnapshot("circle_fresh.png", 5)

cmds.setAttr(makeNurbNodeName + ".sweep", 180)
cmds.setAttr(makeNurbNodeName + ".radius", 2)
cmds.setAttr(makeNurbNodeName + ".degree", 1)
cmds.setAttr(makeNurbNodeName + ".sections", 12)
cmds.setAttr(makeNurbNodeName + ".normalX", 1)
cmds.setAttr(makeNurbNodeName + ".normalY", 2)
cmds.setAttr(makeNurbNodeName + ".normalZ", 3)
cmds.setAttr(makeNurbNodeName + ".centerX", 4)
cmds.setAttr(makeNurbNodeName + ".centerY", 5)
cmds.setAttr(makeNurbNodeName + ".centerZ", 6)
cmds.setAttr(makeNurbNodeName + ".firstPointX", 7)
cmds.setAttr(makeNurbNodeName + ".firstPointY", 8)
cmds.setAttr(makeNurbNodeName + ".firstPointZ", 9)
self.compareSnapshot("circle_modified.png")

cmds.setAttr(makeNurbNodeName + ".useTolerance", True)
cmds.setAttr(makeNurbNodeName + ".tolerance", 0.05)
self.compareSnapshot("circle_tolerance.png")

cmds.setAttr(makeNurbNodeName + ".fixCenter", False)
self.compareSnapshot("circle_unfixedCenter.png")

def test_NurbsSquare(self):
makeNurbNodeName = self.setupScene(cmds.nurbsSquare)
self.compareSnapshot("square_fresh.png", 5)

cmds.setAttr(makeNurbNodeName + ".sideLength1", 2)
cmds.setAttr(makeNurbNodeName + ".sideLength2", 3)
cmds.setAttr(makeNurbNodeName + ".spansPerSide", 4)
cmds.setAttr(makeNurbNodeName + ".degree", 1)
cmds.setAttr(makeNurbNodeName + ".normalX", 1)
cmds.setAttr(makeNurbNodeName + ".normalY", 2)
cmds.setAttr(makeNurbNodeName + ".normalZ", 3)
cmds.setAttr(makeNurbNodeName + ".centerX", 4)
cmds.setAttr(makeNurbNodeName + ".centerY", 5)
cmds.setAttr(makeNurbNodeName + ".centerZ", 6)
self.compareSnapshot("square_modified.png")

if __name__ == '__main__':
fixturesUtils.runTests(globals())
6 changes: 6 additions & 0 deletions test/testUtils/fixturesUtils.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@
import sys
import unittest

# Plugins that are bundled and loaded by default in a Maya installation
DEFAULT_PLUGINS = ['ArubaTessellator']

def _setUpClass(modulePathName, pluginName, initializeStandalone):
'''
Common code for setUpClass() and readOnlySetUpClass()
Expand All @@ -31,6 +34,9 @@ def _setUpClass(modulePathName, pluginName, initializeStandalone):
import maya.cmds as cmds
cmds.loadPlugin(pluginName, quiet=True)

for defaultPlugin in DEFAULT_PLUGINS:
cmds.loadPlugin(defaultPlugin, quiet=True)

realPath = os.path.realpath(modulePathName)
return os.path.split(realPath)

Expand Down
6 changes: 6 additions & 0 deletions test/testUtils/mtohUtils.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,12 @@ def setUpClass(cls):
"define `_file = __file__`")
fixturesUtils.readOnlySetUpClass(cls._file, 'mayaHydra',
initializeStandalone=False)

def setUp(self):
# Maya is not closed/reset between each test of a test suite,
# so open a new file before each test to minimize leftovers
# from previous tests.
cmds.file(new=True, force=True)

def setHdStormRenderer(self):
self.activeEditor = cmds.playblast(activeEditor=1)
Expand Down

0 comments on commit c10f838

Please sign in to comment.