网站排名优化系统,手机管理网站模板下载软件,在县城做商城网站,对网站建设建议做流体模拟的时候#xff0c;想要复现别人的成果#xff0c;但是别人的代码都是每帧输出 ply 格式的文件#xff0c;渲染部分需要自己完成
看了一下#xff0c;似乎用 blender 是最简单的#xff0c;于是记录一下过程中用到的代码
Blender 版本 4.0
批量导入 ply
假设…做流体模拟的时候想要复现别人的成果但是别人的代码都是每帧输出 ply 格式的文件渲染部分需要自己完成
看了一下似乎用 blender 是最简单的于是记录一下过程中用到的代码
Blender 版本 4.0
批量导入 ply
假设所有 ply 文件都和 blend 文件位于同一目录
ply 文件的文件名格式是 00001.ply, 00002.ply, 000123.ply 之类编号表示帧数
希望导入所有 ply 文件都放在一个 collection 里面并且只连接到这个 collection
import bpy
import osin_dir bpy.path.abspath(//)
filters [] # files to ignore
files_number 0def only_link_to_one_collection(obj, collection):for other_col in obj.users_collection:other_col.objects.unlink(obj)if obj.name not in collection.objects:collection.objects.link(obj)def import_ply(path, filters):need_file_items []need_file_names []filterDict {}for item in filters:filterDict[item] True;file_lst os.listdir(path)for item in file_lst:fileName, fileExtension os.path.splitext(item)if fileExtension .ply and (not item in filterDict):need_file_items.append(item)need_file_names.append(fileName)fluid_mesh_collection bpy.data.collections.new(nameFluidMesh)bpy.context.scene.collection.children.link(fluid_mesh_collection)files_number len(need_file_items)for i in range(files_number):item need_file_items[i]itemName need_file_names[i]ufilename path \\ itembpy.ops.wm.ply_import(filepathufilename)cur_obj bpy.data.objects[itemName]if (cur_obj):only_link_to_one_collection(cur_obj, fluid_mesh_collection)cur_obj.hide_set(False)cur_obj.hide_render Trueimport_ply(in_dir, filters)Mesh 预处理
删除没有使用到的材质
import bpytoRemove [block for block in bpy.data.materials if block.users 0]
for block in toRemove:bpy.data.materials.remove(block)添加 Glass BSDF 材质
import bpyfluid_mat bpy.data.materials.new(FluidMat)
fluid_mat.use_nodes Trueprincipled_node fluid_mat.node_tree.nodes.get(Principled BSDF)
fluid_mat.node_tree.nodes.remove(principled_node)glass_node fluid_mat.node_tree.nodes.new(ShaderNodeBsdfGlass)
glass_node.location (0, 0)glass_node.inputs[0].default_value (0.730, 0.927, 1.0, 1.0)
glass_node.inputs[1].default_value 0.0
glass_node.inputs[2].default_value 1.333output_node fluid_mat.node_tree.nodes.get(Material Output)
output_node.location (200, 0)fluid_mat.node_tree.links.new(glass_node.outputs[0], output_node.inputs[0])for obj in bpy.data.collections[FluidMesh].all_objects:obj.active_material fluid_mat重定位 Mesh
具体怎么修改位置和旋转的是根据你代码里面具体是怎么设置流体域的
import bpyfor obj in bpy.data.collections[FluidMesh].all_objects:obj.rotation_euler[0] 1.5708 # 90dobj.location (-4, 4, 0)清理旧的动画
import bpyfor obj in bpy.data.collections[FluidMesh].all_objects:obj.animation_data_clear()制作动画帧
Hide_Render 动画
import bpyfor obj in bpy.data.collections[FluidMesh].all_objects:mesh_name obj.namei int(mesh_name)obj.hide_viewport Trueobj.hide_render Trueobj.keyframe_insert(hide_viewport, frame0)obj.keyframe_insert(hide_render, frame0)obj.hide_viewport Falseobj.hide_render Falseobj.keyframe_insert(hide_viewport, framei1)obj.keyframe_insert(hide_render, framei1)obj.hide_viewport Trueobj.hide_render Trueobj.keyframe_insert(hide_viewport, framei2)obj.keyframe_insert(hide_render, framei2)输出渲染动画
地面、天光等创建暂时不写脚本里手动创建
选择光追渲染才有好看的效果。选 eevee 的话光线都没有从玻璃里面折射出来所以玻璃都是一片黑的
fps 的设置也是根据流体计算时设置的 dt 来的
import bpy
import mathcamera bpy.data.objects[Camera]
camera.location (20, -20, 20)
camera.rotation_euler (math.radians(60), 0, math.radians(45))bpy.context.scene.render.engine CYCLES
bpy.context.scene.cycles.device GPU
bpy.context.scene.cycles.samples 256bpy.context.scene.render.resolution_x 1080
bpy.context.scene.render.resolution_y 720
bpy.context.scene.render.fps 30bpy.context.scene.render.filepath bpy.path.abspath(//fluid_anim.mkv)
bpy.context.scene.render.image_settings.file_format FFMPEGbpy.context.scene.frame_start 1
bpy.context.scene.frame_end len(bpy.data.collections[FluidMesh].all_objects)1bpy.ops.render.render(animationTrue)效果
文章转载自: http://www.morning.grlth.cn.gov.cn.grlth.cn http://www.morning.cctgww.cn.gov.cn.cctgww.cn http://www.morning.cjqcx.cn.gov.cn.cjqcx.cn http://www.morning.webife.com.gov.cn.webife.com http://www.morning.dbylp.cn.gov.cn.dbylp.cn http://www.morning.bpmmq.cn.gov.cn.bpmmq.cn http://www.morning.ptlwt.cn.gov.cn.ptlwt.cn http://www.morning.gbrdx.cn.gov.cn.gbrdx.cn http://www.morning.dmxzd.cn.gov.cn.dmxzd.cn http://www.morning.ysllp.cn.gov.cn.ysllp.cn http://www.morning.wfqcs.cn.gov.cn.wfqcs.cn http://www.morning.hmlpn.cn.gov.cn.hmlpn.cn http://www.morning.yqgbw.cn.gov.cn.yqgbw.cn http://www.morning.pxlql.cn.gov.cn.pxlql.cn http://www.morning.grcfn.cn.gov.cn.grcfn.cn http://www.morning.tkfnp.cn.gov.cn.tkfnp.cn http://www.morning.pxwzk.cn.gov.cn.pxwzk.cn http://www.morning.qcbhb.cn.gov.cn.qcbhb.cn http://www.morning.junmap.com.gov.cn.junmap.com http://www.morning.pylpd.cn.gov.cn.pylpd.cn http://www.morning.fpjxs.cn.gov.cn.fpjxs.cn http://www.morning.lokext.com.gov.cn.lokext.com http://www.morning.cbnjt.cn.gov.cn.cbnjt.cn http://www.morning.dwwlg.cn.gov.cn.dwwlg.cn http://www.morning.cwjxg.cn.gov.cn.cwjxg.cn http://www.morning.ffbl.cn.gov.cn.ffbl.cn http://www.morning.pzlcd.cn.gov.cn.pzlcd.cn http://www.morning.xfyjn.cn.gov.cn.xfyjn.cn http://www.morning.swlwf.cn.gov.cn.swlwf.cn http://www.morning.yaqi6.com.gov.cn.yaqi6.com http://www.morning.ksgjn.cn.gov.cn.ksgjn.cn http://www.morning.xwlmg.cn.gov.cn.xwlmg.cn http://www.morning.fdfsh.cn.gov.cn.fdfsh.cn http://www.morning.klpwl.cn.gov.cn.klpwl.cn http://www.morning.dnls.cn.gov.cn.dnls.cn http://www.morning.pqryw.cn.gov.cn.pqryw.cn http://www.morning.tsmxh.cn.gov.cn.tsmxh.cn http://www.morning.heleyo.com.gov.cn.heleyo.com http://www.morning.nynpf.cn.gov.cn.nynpf.cn http://www.morning.jntcr.cn.gov.cn.jntcr.cn http://www.morning.hjjkz.cn.gov.cn.hjjkz.cn http://www.morning.yzfrh.cn.gov.cn.yzfrh.cn http://www.morning.dlmqn.cn.gov.cn.dlmqn.cn http://www.morning.xkyqq.cn.gov.cn.xkyqq.cn http://www.morning.qgmbx.cn.gov.cn.qgmbx.cn http://www.morning.rqqmd.cn.gov.cn.rqqmd.cn http://www.morning.zknxh.cn.gov.cn.zknxh.cn http://www.morning.gwyml.cn.gov.cn.gwyml.cn http://www.morning.cwznh.cn.gov.cn.cwznh.cn http://www.morning.tdfyj.cn.gov.cn.tdfyj.cn http://www.morning.fpkdd.cn.gov.cn.fpkdd.cn http://www.morning.ntyanze.com.gov.cn.ntyanze.com http://www.morning.rxsgk.cn.gov.cn.rxsgk.cn http://www.morning.yqqgp.cn.gov.cn.yqqgp.cn http://www.morning.mqffm.cn.gov.cn.mqffm.cn http://www.morning.fmqw.cn.gov.cn.fmqw.cn http://www.morning.kgphd.cn.gov.cn.kgphd.cn http://www.morning.wlstn.cn.gov.cn.wlstn.cn http://www.morning.lfmwt.cn.gov.cn.lfmwt.cn http://www.morning.rjfr.cn.gov.cn.rjfr.cn http://www.morning.thbnt.cn.gov.cn.thbnt.cn http://www.morning.lxwjx.cn.gov.cn.lxwjx.cn http://www.morning.gzttoyp.com.gov.cn.gzttoyp.com http://www.morning.cyyhy.cn.gov.cn.cyyhy.cn http://www.morning.kfwrq.cn.gov.cn.kfwrq.cn http://www.morning.gyqnc.cn.gov.cn.gyqnc.cn http://www.morning.kztts.cn.gov.cn.kztts.cn http://www.morning.kzcz.cn.gov.cn.kzcz.cn http://www.morning.zgqysw.cn.gov.cn.zgqysw.cn http://www.morning.kmbgl.cn.gov.cn.kmbgl.cn http://www.morning.hpnhl.cn.gov.cn.hpnhl.cn http://www.morning.tztgq.cn.gov.cn.tztgq.cn http://www.morning.rqhn.cn.gov.cn.rqhn.cn http://www.morning.ryysc.cn.gov.cn.ryysc.cn http://www.morning.rsxw.cn.gov.cn.rsxw.cn http://www.morning.rcfwr.cn.gov.cn.rcfwr.cn http://www.morning.qrzqd.cn.gov.cn.qrzqd.cn http://www.morning.bpmdn.cn.gov.cn.bpmdn.cn http://www.morning.pkggl.cn.gov.cn.pkggl.cn http://www.morning.mngyb.cn.gov.cn.mngyb.cn