Blender 2.9激光切片机脚本:3D模型转SVG利器

需积分: 29 1 下载量 121 浏览量 更新于2024-12-12 收藏 12KB ZIP 举报
资源摘要信息:"laser_slicer: Blender 2.9的激光切片机脚本" 知识点一:Blender 2.9简介 Blender是一款开源的3D建模、动画和渲染软件,它支持从简单的3D模型到复杂场景的创建,广泛应用于电影、游戏、动画、虚拟现实等多个领域。Blender 2.9指的是该软件的2.9版本,该版本包含了大量的新特性和改进。 知识点二:激光切片机概念 激光切片机是一种使用激光作为加工光源,将材料切割成所需形状的精密加工设备。它可以实现高速、高精度的切割,并且切割过程无需直接接触材料,减少加工过程对材料的影响。 知识点三:Blender附加组件 附加组件是指Blender软件中可以添加到基础程序中,以扩展软件功能的插件或脚本。通过附加组件,用户可以为Blender增加特定的功能,例如本例中的激光切片机脚本。 知识点四:激光切片机脚本应用 脚本允许用户在Blender中将3D对象切分为一系列的切片,并将这些切片信息导出为SVG格式文件。SVG是一种基于XML的矢量图形格式,广泛用于网络图形。在激光切割机上使用时,SVG格式的文件可以被读取并精确地沿着矢量路径切割材料。 知识点五:Python编程语言 Python是一种广泛使用的高级编程语言,以其清晰的语法和代码可读性著称。在本例中,激光切片机脚本很可能是用Python编写的,因为Blender内建对Python的支持,允许用户通过编写Python脚本来扩展其功能。 知识点六:Blender的导出功能 Blender提供了强大的导出工具,允许用户将创建的3D模型导出为不同格式的文件,以便在其他软件或硬件中使用。在本脚本的作用下,用户可以将切割后的切片导出为SVG文件,用于激光切割机。 知识点七:后期处理概念 后期处理通常指在产品制造、图像处理、视频制作等过程中,对原始素材进行加工、优化和处理的步骤,以达到所需的最终效果。在激光切割的背景下,后期处理可能包括拼接切片、边缘修整、装饰性添加等。 知识点八:教程视频重要性 教程视频是学习新软件、功能或技术的有力工具,它通过视觉和听觉信息的结合,帮助用户更快地理解操作流程和功能细节。在本资源中,指向教程视频的链接表明了学习如何使用激光切片机脚本的重要途径。 总结来说,"laser_slicer: Blender 2.9的激光切片机脚本"这一资源涉及了Blender的高级功能扩展、Python编程应用、激光加工技术以及后期处理等多个知识点。用户可以利用此脚本在Blender中处理模型,并导出为适合激光切割的SVG格式文件,实现从3D设计到实物加工的转化。

clear all; close all; clc; tic bits_options = [0,1,2]; noise_option = 1; b = 4; NT = 2; SNRdBs =[0:2:20]; sq05=sqrt(0.5); nobe_target = 500; BER_target = 1e-3; raw_bit_len = 2592-6; interleaving_num = 72; deinterleaving_num = 72; N_frame = 1e8; for i_bits=1:length(bits_options) bits_option=bits_options(i_bits); BER=zeros(size(SNRdBs)); for i_SNR=1:length(SNRdBs) sig_power=NT; SNRdB=SNRdBs(i_SNR); sigma2=sig_power10^(-SNRdB/10)noise_option; sigma1=sqrt(sigma2/2); nobe = 0; Viterbi_init for i_frame=1:1:N_frame switch (bits_option) case {0}, bits=zeros(1,raw_bit_len); case {1}, bits=ones(1,raw_bit_len); case {2}, bits=randi(1,raw_bit_len,[0,1]); end encoding_bits = convolution_encoder(bits); interleaved=[]; for i=1:interleaving_num interleaved=[interleaved encoding_bits([i:interleaving_num:end])]; end temp_bit =[]; for tx_time=1:648 tx_bits=interleaved(1:8); interleaved(1:8)=[]; QAM16_symbol = QAM16_mod(tx_bits, 2); x(1,1) = QAM16_symbol(1); x(2,1) = QAM16_symbol(2); if rem(tx_time-1,81)==0 H = sq05(randn(2,2)+jrandn(2,2)); end y = Hx; if noise_option==1 noise = sqrt(sigma2/2)(randn(2,1)+j*randn(2,1)); y = y + noise; end W = inv(H'H+sigma2diag(ones(1,2)))H'; X_tilde = Wy; X_hat = QAM16_slicer(X_tilde, 2); temp_bit = [temp_bit QAM16_demapper(X_hat, 2)]; end deinterleaved=[]; for i=1:deinterleaving_num deinterleaved=[deinterleaved temp_bit([i:deinterleaving_num:end])]; end received_bit=Viterbi_decode(deinterleaved); for EC_dummy=1:1:raw_bit_len, if bits(EC_dummy)~=received_bit(EC_dummy), nobe=nobe+1; end if nobe>=nobe_target, break; end end if (nobe>=nobe_target) break; end end = BER(i_SNR) = nobe/((i_frame-1)*raw_bit_len+EC_dummy); fprintf('bits_option:%d,SNR:%d dB,BER:%1.4f\n',bits_option,SNRdB,BER(i_SNR)); end figure; semilogy(SNRdBs,BER); xlabel('SNR(dB)'); ylabel('BER'); title(['Bits_option:',num2str(bits_option)]); grid on; end将这段代码改为有噪声的情况

175 浏览量

clear all; close all; clc;ticits_option = 2;noise_option = 1;raw_bit_len = 2592-6;interleaving_num = 72;deinterleaving_num = 72;N_frame = 1e4;SNRdBs = [0:2:20];sq05 = sqrt(0.5);bits_options = [0, 1, 2]; % 三种bits-option情况obe_target = 500;BER_target = 1e-3;for i_bits = 1:length(bits_options) bits_option = bits_options(i_bits); BER = zeros(size(SNRdBs)); for i_SNR = 1:length(SNRdBs) sig_power = 1; SNRdB = SNRdBs(i_SNR); sigma2 = sig_power * 10^(-SNRdB/10); sigma = sqrt(sigma2/2); nobe = 0; for i_frame = 1:N_frame switch bits_option case 0 bits = zeros(1, raw_bit_len); case 1 bits = ones(1, raw_bit_len); case 2 bits = randi([0,1], 1, raw_bit_len); end encoding_bits = convolution_encoder(bits); interleaved = []; for i = 1:interleaving_num interleaved = [interleaved encoding_bits([i:interleaving_num:end])]; end temp_bit = []; for tx_time = 1:648 tx_bits = interleaved(1:8); interleaved(1:8) = []; QAM16_symbol = QAM16_mod(tx_bits, 2); x(1,1) = QAM16_symbol(1); x(2,1) = QAM16_symbol(2); if rem(tx_time - 1, 81) == 0 H = sq05 * (randn(2,2) + j * randn(2,2)); end y = H * x; if noise_option == 1 noise = sigma * (randn(2,1) + j * randn(2,1)); y = y + noise; end W = inv(H' * H + sigma2 * diag(ones(1,2))) * H'; K_tilde = W * y; x_hat = QAM16_slicer(K_tilde, 2); temp_bit = [temp_bit QAM16_demapper(x_hat, 2)]; end deinterleaved = []; for i = 1:deinterleaving_num deinterleaved = [deinterleaved temp_bit([i:deinterleaving_num:end])]; end received_bit = Viterbi_decode(deinterleaved); for EC_dummy = 1:1:raw_bit_len if nobe >= obe_target break; end if received_bit(EC_dummy) ~= bits(EC_dummy) nobe = nobe + 1; end end if nobe >= obe_target break; end end BER(i_SNR) = nobe / (i_frame * raw_bit_len); fprintf('bits-option: %d, SNR: %d dB, BER: %1.4f\n', bits_option, SNRdB, BER(i_SNR)); end figure; semilogy(SNRdBs, BER); xlabel('SNR (dB)'); ylabel('BER'); title(['Bits-Option: ', num2str(bits_option)]); grid on;end注释这段matlab代码

151 浏览量