111 lines
3.4 KiB
Plaintext
111 lines
3.4 KiB
Plaintext
//******************************************************************************
|
||
//
|
||
// 版权所有: 玉溪时光科技有限公司
|
||
// 联系邮箱: q.100@qq.com
|
||
// 开发日期: 2024/11/18
|
||
//
|
||
//******************************************************************************
|
||
|
||
global proc SGRBFDeformerWindow(){
|
||
|
||
if (!`window -ex SuperRiggingEditor`){
|
||
return;
|
||
}
|
||
|
||
if (`window -ex RBFDeformerWin`){
|
||
deleteUI -window RBFDeformerWin;
|
||
}
|
||
|
||
string $Load = "Load...";
|
||
string $Original = "Original:";
|
||
string $Deformed = "Deformed:";
|
||
string $Radius = "Radius:";
|
||
string $Points = "Points:";
|
||
string $Execute = "Execute";
|
||
|
||
if(`SGDescriptor -l` == "ZH"){
|
||
$Load = "加载...";
|
||
$Original = "原始模型:";
|
||
$Deformed = "变形模型:";
|
||
$Radius = "计算半径:";
|
||
$Points = "计算点数:";
|
||
$Execute = "开始执行";
|
||
}
|
||
|
||
window -p SuperRiggingEditor -w 310 -h 100 -t "RBF Deformer" -s true -tb true RBFDeformerWin;
|
||
columnLayout -adj 1 -columnAttach "both" 5 -rowSpacing 2 -columnWidth 150 ;
|
||
separator -height 10 -style "in";
|
||
|
||
textFieldButtonGrp -adj 2 -cw3 70 1 30 -l $Original -bl $Load -bc "SGRBFDeformerLoadOriginal;" RBFDeformer_Original;
|
||
textFieldButtonGrp -adj 2 -cw3 70 1 30 -l $Deformed -bl $Load -bc "SGRBFDeformerLoadDeformed;" RBFDeformer_Deformed;
|
||
|
||
separator -height 10 -style "in";
|
||
rowLayout -adj 3 -nc 3 -cw3 70 70 1 -ct3 "right" "left" "left";
|
||
text -l $Radius;
|
||
floatField -w 70 -max 2 -min 0.001 -v 0.1 -cc "SGSetRadiusSlider;" RBFDeformer_RadiusField;
|
||
floatSlider -max 2 -min 0.001 -v 0.1 -dc "SGSetRadiusField;" RBFDeformer_RadiusSlider;
|
||
setParent..;
|
||
|
||
rowLayout -adj 3 -nc 3 -cw3 70 70 1 -ct3 "right" "left" "left";
|
||
text -l $Points;
|
||
intField -w 70 -max 10000 -min 100 -v 2000 -cc "SGSetPointsSlider;" RBFDeformer_PointsField;
|
||
intSlider -max 10000 -min 100 -v 2000 -dc "SGSetPointsField;" RBFDeformer_PointsSlider;
|
||
setParent..;
|
||
|
||
separator -height 10 -style "in";
|
||
|
||
button -l $Execute -al "center" -c "SGRBFDeformerExecute;" RBFDeformer_Execute;
|
||
|
||
separator -height 10 -style "in";
|
||
|
||
showWindow RBFDeformerWin;
|
||
}
|
||
|
||
global proc SGRBFDeformerExecute(){
|
||
|
||
string $Original = `textFieldButtonGrp -q -tx RBFDeformer_Original`;
|
||
string $Deformed = `textFieldButtonGrp -q -tx RBFDeformer_Deformed`;
|
||
float $Radius = `floatField -q -v RBFDeformer_RadiusField`;
|
||
int $Points = `intField -q -v RBFDeformer_PointsField`;
|
||
|
||
int $OrgVtx[] = `polyEvaluate -v $Original`;
|
||
int $DefVtx[] = `polyEvaluate -v $Deformed`;
|
||
|
||
if($OrgVtx[0] != $DefVtx[0]){
|
||
error -n "The topology of the two models is inconsistent...";
|
||
return ;
|
||
}
|
||
|
||
string $sel[] = `ls -sl`;
|
||
SGRBFDeformer -r $Radius -np $Points -rbf 1 -m $Original $Deformed -t $sel;
|
||
}
|
||
|
||
global proc SGRBFDeformerLoadOriginal(){
|
||
string $sel[] = `ls -sl`;
|
||
textFieldButtonGrp -e -tx $sel[0] RBFDeformer_Original;
|
||
}
|
||
|
||
global proc SGRBFDeformerLoadDeformed(){
|
||
string $sel[] = `ls -sl`;
|
||
textFieldButtonGrp -e -tx $sel[0] RBFDeformer_Deformed;
|
||
}
|
||
|
||
global proc SGSetRadiusField(){
|
||
float $v = `floatSlider -q -v RBFDeformer_RadiusSlider`;
|
||
floatField -e -v $v RBFDeformer_RadiusField;
|
||
}
|
||
|
||
global proc SGSetRadiusSlider(){
|
||
float $v = `floatField -q -v RBFDeformer_RadiusField`;
|
||
floatSlider -e -v $v RBFDeformer_RadiusSlider;
|
||
}
|
||
|
||
global proc SGSetPointsField(){
|
||
int $v = `intSlider -q -v RBFDeformer_PointsSlider`;
|
||
intField -e -v $v RBFDeformer_PointsField;
|
||
}
|
||
|
||
global proc SGSetPointsSlider(){
|
||
int $v = `intField -q -v RBFDeformer_PointsField`;
|
||
intSlider -e -v $v RBFDeformer_PointsSlider;
|
||
} |