我正在尝试编写一个调用外部脚本的函数,但是语法没有运气
scripts_folder = "C:\\Program Files\\Autodesk\\3ds Max 2008\\Scripts"
var script1 = "hello_world.ms"
-- use function to call scripts
callScript(script1)
-- function callScript
function callScript script =
(
getFiles scripts_folder + "\\" + script
)
Run Code Online (Sandbox Code Playgroud) 我有一个非常甜蜜的设置,用于编辑和运行来自sublime文本2内的maxscript.
我最近想要的一件事是用正常的圆括号来模拟或复制花括号的行为
编辑: 对不起 - 当我不在时,Chrome决定我在那里完成编辑:(
如果我键入,if (x) then {那么enter我将得到一个格式良好的块,现在在箭头处的插入符号
if(x) then {
<-
}
Run Code Online (Sandbox Code Playgroud)
但我无法找到崇高文本藏在哪里.
我想将此行为复制到正常的圆括号()而不是获取
if (x) then (
<-)
Run Code Online (Sandbox Code Playgroud) 我想将git集成到生产管道中以存储3dsmax文件.虽然可以通过TortoiseGit使用git,但我想通过Maxscript与它进行通信,以便为3dsmax添加自定义菜单命令.
我应该解析git status输出文本以确定文件夹状态还是应该使用一些包装工具来正确地与git通信?
我在想,gitsharp因为很容易从Maxscript调用dotNet对象,但我没有使用外部dotNet程序.
我在3Dsmax 2015上做了一些简单的PySide.
这是我的错误:
python.ExecuteFile "C:\Program Files\Autodesk\3ds Max 2015\scripts\Python\demoUniTest.py"
-- Runtime error: Line 32 <module>()
<type 'exceptions.RuntimeError'> A QApplication instance already exists.
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
import sys
from PySide.QtCore import *
from PySide.QtGui import *
from math import *
class Form(QDialog):
def __init__(self,parent=None):
super(Form,self).__init__(parent)
self.browser = QTextBrowser()
self.lineedit = QLineEdit("Type an expression and press Enter")
self.lineedit.selectAll()
layout = QVBoxLayout()
layout.addWidget(self.browser)
layout.addWidget(self.lineedit)
self.setLayout(layout)
self.lineedit.setFocus()
self.connect(self.lineedit, SIGNAL("returnPressed()"),self.updateUi)
self.setWindowTitle("Calculate")
def updateUi(self):
try:
text = self.lineedit.text()
self.browser.append("%s = <b>%s</b>" % (text,eval(text)))
except:
self.browser.append("<font color=red>%s is invalid</font>" %text) …Run Code Online (Sandbox Code Playgroud) 我需要访问Perspective视口的FOV属性.这与与目标和免费相机相关联的FOV属性不同.
要以非编程方式访问FOV属性,请右键单击视口名称(每个视口的左上角),转到配置,在"透视用户视图"下,您可以更改FOV.
在 maxscript 中,似乎有两个选项可以通过紧凑的材质编辑器和 Slate 材质编辑器访问材质。问题在于,如果 max 设置为使用 Slate 编辑器,则尝试通过紧凑编辑器 ( currentMaterialLibrary, sceneMaterials, meditMaterials)访问/修改材料的脚本会失败,反之亦然。
有没有办法直接在 maxscript 中访问材料,而不管使用哪个编辑器?
一旦我有了材料,我想:
如何在规范化之前对已经规范化的矢量进行非规范化以获得原始值?
例如:
vec = [-0.5, -1.0, 0.0]
vec_length = sqrt(vec.x^2 + vec.y^2 + vec.z^2)
vec_normalized = [vec.x/vec_length, vec.y/vec_length, vec.z/vec_length]
Run Code Online (Sandbox Code Playgroud)
收益率:
vec_length = 1.11803
vec_normalized = [-0.447214,-0.894427,0]
Run Code Online (Sandbox Code Playgroud)
如何从标准化向量[-0.447214,-0.894427,0]中获取原始向量[-0.5,-1.0,0.0]?
谢谢!
在平板材质编辑器中,我可以右键单击材质并切换"在视口中显示标准贴图".如何从maxscsript以编程方式切换/设置材料的此选项?
使用Maxsctipt:导出文件以下代码正常工作:
caption:"Caption" \
types:"text(*.txt)|*.txt|All|*.*|" \
filename:(sysinfo.currentdir + @"\some_text.txt")
Run Code Online (Sandbox Code Playgroud)
但我想知道@符号有什么意义?
我正在尝试修复带有负比例的动画模型(我知道这可能是个坏主意)。在查看 max 脚本中的变换时,我注意到一些有趣的事情,这可能与 3ds max 中左手坐标系的内部使用有关。我将节点的变换与节点的 PRS 值进行了比较:我的期望是通过乘以 PRS 值,我也应该得到变换。但是,如果对象被旋转或镜像,则情况并非如此,请参阅:
$.transform =
row1 [0.866,-0.500,0.000]
row2 [-0.500,-0.866,0.000]
row3 [0.000,0.000,1.000]
row4 [13.000,-3.000,1.000]
...scale * ...rotation * ...pos =
row1 [-0.866,0.500,0.000]
row2 [-0.500,-0.866,0.000]
row3 [0.000,0.000,-1.000]
row4 [13.000,-3.000,1.000]
...transform.scalepart * ...transform.rotationpart * ...transform.translationpart =
row1 [-0.866,0.500,0.000]
row2 [0.500,0.866,0.000]
row3 [0.000,0.000,-1.000]
row4 [13.000,-3.000,1.000]
Run Code Online (Sandbox Code Playgroud)
任何想法,为什么这些转换不一样?我试图了解 3ds max 是如何工作的。非常感谢您的任何见解!
假设我有一个标准化的向量,但我不知道z坐标是什么.如何在保留现有x和y坐标的同时检索规范化的z坐标.
例如:
X: -0.361
Y: 0.361
Z: ?
Run Code Online (Sandbox Code Playgroud)
只是x和y的长度是0.510531
len = sqrt((ax * ax) + (ay * ay)) -- 0.510531
Run Code Online (Sandbox Code Playgroud)
谢谢!