Blender导出pmx模型
写在前面:在网上没有找到特别好的导出pmx模型的教程。在b站找到一个导出pmx文件的教程,但是导出的时候没能导出材质,是一个没有材质的模型。我导出pmx模型的目的是为了导入到PmxEditor
中添加骨骼,所以只是想导出模型即可。另外对于为什么这样做会成功我也不是很清楚,但有一个猜测,会在之后写出来的;
用到的文件及软件blender3.1、插件(mmd_tool)
具体的步骤
打开需要导出模型的blender的工程文件,打开mmd_tool的插件界面;
点击创建新的模型,然后就会看到增加的新的骨骼;
创建新模型的时候最好选中到集合里,这样连接网络的时候可以包含进去,我不知道为什么会这样;
mmd模型的骨骼和其他的模型的骨骼不一样,有一些区别;
注意右边大纲视图中的文件的的变化以及图中的圈中的部分;
点击连接网络;
下面就是选中了集合后的连接网络的变化;
另外需要说的就是blender里的选中是前面的图标选中,没选中的就会没有被点亮;
选中连接网络后的骨骼,然后点击插件面板里的转换模型,然后环境色源选择镜像,之后导出就可以了;
对于其中的数值,都 ...
模型的特别基础技能简单教程_随记
骨骼替换前言:mmd中使用到的模型有很多的种类,其中比较常见的有sour式、tda式、YYB式、三妈式(ままま式),比较老的还有lat式,其他的就是一些官模REM式、Kinsama式。最后提到的三种模型是比较官方的,rem式做得比较好,官模一般很少使用、很多使用的都是直接录制歌姬计划中的视频和一般的mmd不一样;
骨骼替换的原因是动作数据并不是可以直接通用的,要根据制作动作数据时使用的模型有关,有的时候也和初始模型的姿势有关。但大部分时候一般的动作数据是可以直接用常见的几种模型的;一般使用骨骼替换的场景都是动作数据和模型骨骼不相匹配的时候。比如三妈式的骨骼和tda式的就有区别,三妈式的总体关联的骨骼只有一个全亲骨,相当于主心骨;tda式的是两个骨骼;
替换骨骼的关键是替换骨骼的本体骨骼是否处理得合适;因为一般替换骨骼是用pmeditor。它可以直接合并同名骨骼,所以使用它替换骨骼更加方便;因为要同名,所以如果是自己制作的话就需要修改骨骼给名字,也可以直接使用别人做好的,不然到时候相当于要重新做一套模型那么麻烦;标准骨骼除了要修改骨骼名外还需要主要权重、刚体、j点等,后面的可以直接删除了 ...
C语言变量的存储方式和生存期
写在前面在本篇前需要提到的一个内容——变量的作用域问题。每一个变量都有一个自己的作用域。c语言中根据变量的作用域可以将变量分为全局变量和局部变量。从另一个角度变量的存在时间(及生存期)来观察,会发现有的变量在程序运行的开始就会被分配存储空间,直到整个程序运行结束后才会释放存储空间,但有的变量在调用改该变量所在函数时候才会分配存储空间,函数调用结束后,分配的存储空间就会被释放。会有这种不同是原因是变量的存储方式。变量的存储方式有静态存储方式和动态存储方式。
局部变量和全局变量
局部变量
在函数的开头定义:在本函数中可以使用;
在函数内地复合语句中的定义:在该复合语句中可以使用,这种复合语句也称为“分程序”或“程序块”;
在函数的外部定义:函数的外部定义呢要分开情况定,因为有的外部定义也可以是全局变量;
局部变量的生存期从函数调用开始直到函数调用结束;
- 全局变量
程序的编译单位是源程序文件,一个源程序文件可包含一个或多个函数,而在函数之外定义的外部变量为全局变量。全局变量可以被本文件中的其他函数使用,生存期直到源文件结束为止;
为更好的区分全局 ...
JDBC数据库访问实现
一、实验目的
理清四大问题,实现简单的MySql数据库连接
二、实验原理
通过使用支持java连接MySQL数据库的驱动程序实现对数据库的访问操作;
三、实验步骤:
使用支持连接的驱动程序mysql-connector-j-8.0.31;
使用类DriverManager中的方法getConnection(建连接所需要的资源),就可以创建一个数据库连接;
创建连接Connection conn=DriverManager.getConnection(url:建连接所需要的资源);例如以下的方式;
12345678//假设用户名为:root 密码为:123456 数据库为:students ,则:String userName = "root";//数据库用户名String userPwd = "123456";//密码String dbName = "students";//数据库名,注意:刚刚安装的时候是没有数据库的,需要自己先创建一个,MySql创建数据库的方式可以百度得到String url1="jdb ...
Numpy的一些基础简单操作
NumPy是一个强大的Python科学计算库,提供了许多基础的常规操作。下面是一些常见的NumPy操作:
创建数组:
np.array([1, 2, 3]):创建一维数组。
np.zeros((2, 3)):创建指定形状的全零数组。
np.ones((2, 3)):创建指定形状的全一数组。
np.arange(start, stop, step):创建一个等差数列数组。
数组属性和操作:
array.shape:获取数组的形状(行数和列数)。
array.ndim:获取数组的维度。
array.size:获取数组中的元素总数。
array.dtype:获取数组的数据类型。
array.reshape(new_shape):改变数组的形状。
array.flatten():将多维数组展平为一维数组。
array.transpose():矩阵转置。
数组索引和切片:
array[index]:获取指定索引位置的元素或元素组成的子数组。
array[start:stop]:获取指定范围内的元素组成的子数组。
array[:, col]:获取指定列的元 ...
Pandas的一些常规操作
pandas是一个功能强大的数据分析库,提供了许多常规的操作来处理和分析数据。下面是一些常见的pandas操作:
数据导入和导出:
pd.read_csv():从CSV文件导入数据。
pd.read_excel():从Excel文件导入数据。
df.to_csv():将数据保存为CSV文件。
df.to_excel():将数据保存为Excel文件。
数据查看和探索:
df.head():查看数据框的前几行。
df.tail():查看数据框的后几行。
df.info():显示数据框的基本信息。
df.describe():生成数据框的统计摘要。
df.shape:获取数据框的行数和列数。
df.columns:获取数据框的列名。
数据选择和筛选:
df['column_name']:选择指定列的数据。
df[['column1', 'column2']]:选择多列数据。
df.loc[row_indexer, column_indexer]:按标签进行数据选择。
df.iloc[row_indexe ...
Requsets库的基础常规操作
requests是一个常用的Python库,用于发送HTTP请求并与Web服务进行交互。它提供了简单而直观的API,使得进行基本的HTTP操作变得非常容易。以下是requests库的一些基础常规操作:
发送GET请求:
123import requestsresponse = requests.get(url)
发送POST请求:
123import requestsresponse = requests.post(url, data=payload)
发送带有请求头的请求:
1234import requestsheaders = {'User-Agent': 'Mozilla/5.0'}response = requests.get(url, headers=headers)
发送带有参数的请求:
1234import requestsparams = {'key1': 'value1', 'key2': 'value2 ...
绝对路径和相对路径、python数据文件导入方式
在Python中如何以绝对路径或者相对路径导入文件绝对路径:绝对路径就是文件的真正存在的路径,是指从硬盘的根目录(盘符)开始,进行一级级目录指向文件;
相对路径:相对路径就是以当前文件为基准进行一级级目录指向被引用的资源文件。
示例(使用相对位置):
1234567891011from wordcloud import WordCloudimport matplotlib.pyplot as pltwith open('../实训代码 22.8.26更新/代码/第3章/3-1/1.txt','r') as f: mytext = f.read()#使用绝对位置# with open('C:/Users/Administrator/Desktop/实训代码 22.8.26更新/代码/第3章/3-1/1.txt','r') as f:# mytext01 = f.read()wordcloud = WordCloud().generate(mytext)plt.imshow(wordclo ...
python读取CSV并转为数组_python读取csv文件并转换数据类型
原帖地址:python读取CSV并转为数组python读取csv文件并转为数组coberup的博客-CSDN博客
存在问题:读取CSV,并将数据转化为数组
解决方案:
方法1: 使用pandas库
Text123456789import pandas as pddata=pd.read_csv("F:\PythonFiles\PycharmFile\ex14PermutationCombination_DataIn.csv",header=None) #必须添加header=None,否则默认把第一行数据处理成列名导致缺失list=data.values.tolist()print(list)print(list[1])print(list[2])print(list[1]+list[2])print(len(list))
输出:
Text12345[[1, 2], [2, 3], [3, 4], [4, 5], [5, 6], [6, 7]][2, 3][3, 4][2, 3, 3, 4]6
方法2:使用numpy库
Text1234567import nu ...
bat脚本简单教程
下面是一个简单的批处理脚本教程,介绍批处理的基础知识和常用命令:
创建批处理脚本: 使用任何文本编辑器(如Notepad++或记事本)创建一个新的文本文件,将其保存为 .bat 文件扩展名。例如:myscript.bat。
基本语法: 批处理脚本的基本语法是一系列命令行命令,每行一个命令。在批处理脚本中,使用 @echo off 命令关闭命令回显,这样在执行脚本时,命令行窗口上不会显示每个命令的执行过程。
12batchCopy code@echo off
注释: 在批处理脚本中,你可以使用 REM 开头的行来添加注释。注释行不会被脚本执行,只是用来向你和其他人解释脚本的作用。
12batchCopy codeREM 这是一个批处理脚本示例
变量: 使用 % 符号来表示变量。你可以在脚本中定义和使用变量,用于存储临时数据或用户输入。
123batchCopy codeset myVariable=Hello, World!echo %myVariable%
用户输入: 使用 set /p 命令来获取用户输入,并将其存储在变量中。
123batchCopy codese ...