[Bf-extensions-cvs] [0704ebc4] master: io_export/import_unreal_psk_psa: move to contrib: T63750

meta-androcto noreply at git.blender.org
Fri May 24 03:28:27 CEST 2019


Commit: 0704ebc48b4762a4f3c6b4a1252abb514d7f21db
Author: meta-androcto
Date:   Fri May 24 11:28:03 2019 +1000
Branches: master
https://developer.blender.org/rBA0704ebc48b4762a4f3c6b4a1252abb514d7f21db

io_export/import_unreal_psk_psa: move to contrib: T63750

===================================================================

D	io_export_unreal_psk_psa.py
D	io_import_scene_unreal_psa_psk.py

===================================================================

diff --git a/io_export_unreal_psk_psa.py b/io_export_unreal_psk_psa.py
deleted file mode 100644
index 3008d6c8..00000000
--- a/io_export_unreal_psk_psa.py
+++ /dev/null
@@ -1,3010 +0,0 @@
-# ##### BEGIN GPL LICENSE BLOCK #####
-#
-#  This program is free software: you can redistribute it and/or modify
-#  it under the terms of the GNU General Public License as published by
-#  the Free Software Foundation, either version 3 of the License, or
-#  (at your option) any later version.
-#
-#  This program is distributed in the hope that it will be useful,
-#  but WITHOUT ANY WARRANTY; without even the implied warranty of
-#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-#  GNU General Public License for more details.
-#
-#  You should have received a copy of the GNU General Public License
-#  along with this program.  If not, see <http://www.gnu.org/licenses/>.
-#  All rights reserved.
-#
-# ##### END GPL LICENSE BLOCK #####
-
-bl_info = {
-    "name": "Export Unreal Engine Format(.psk/.psa)",
-    "author": "Darknet/Optimus_P-Fat/Active_Trash/Sinsoft/VendorX/Spoof",
-    "version": (2, 7, 1),
-    "blender": (2, 65, 4),
-    "location": "File > Export > Skeletal Mesh/Animation Data (.psk/.psa)",
-    "description": "Export Skeleletal Mesh/Animation Data",
-    "warning": "",
-    "wiki_url": "https://wiki.blender.org/index.php/Extensions:2.6/Py/"
-                "Scripts/Import-Export/Unreal_psk_psa",
-    "category": "Import-Export",
-}
-
-"""
--- Unreal Skeletal Mesh and Animation Export (.psk  and .psa) export script v0.0.1 --<br>
-
-- NOTES:
-- This script Exports To Unreal's PSK and PSA file formats for Skeletal Meshes and Animations. <br>
-- This script DOES NOT support vertex animation! These require completely different file formats. <br>
-
-- v0.0.1
-- Initial version
-
-- v0.0.2
-- This version adds support for more than one material index!
-
-[ - Edit by: Darknet
-- v0.0.3 - v0.0.12
-- This will work on UT3 and it is a stable version that work with vehicle for testing.
-- Main Bone fix no dummy needed to be there.
-- Just bone issues position, rotation, and offset for psk.
-- The armature bone position, rotation, and the offset of the bone is fix.
-  It was to deal with skeleton mesh export for psk.
-- Animation is fix for position, offset, rotation bone support one rotation direction when armature build.
-- It will convert your mesh into triangular when exporting to psk file.
-- Did not work with psa export yet.
-
-- v0.0.13
-- The animatoin will support different bone rotations when export the animation.
-
-- v0.0.14
-- Fixed Action set keys frames when there is no pose keys and it will ignore it.
-
-- v0.0.15
-- Fixed multiple objects when exporting to psk. Select one mesh to export to psk.
-- ]
-
-- v0.1.1
-- Blender 2.50 svn (Support)
-
-Credit to:
-- export_cal3d.py (Position of the Bones Format)
-- blender2md5.py (Animation Translation Format)
-- export_obj.py (Blender 2.5/Pyhton 3.x Format)
-
-- freenode #blendercoder -> user -> ideasman42
-
-- Give Credit to those who work on this script.
-
-- http://sinsoft.com
-"""
-
-
-# ===========================================================================
-"""
-NOTES for Jan 2012 refactor (Spoof)
-
-    * THIS IS A WORK IN PROGRESS. These modifications were originally
-    intended for internal use and are incomplete. Use at your own risk! *
-
-TODO
-
-- (Blender 2.62) changes to Matrix math
-- (Blender 2.62) check for long names
-- option to manually set the root bone for export
-
-CHANGES
-
-- new bone parsing to allow advanced rigging
-- identification of armature and mesh
-- removed the need to apply an action to the armature
-- fixed anim rate to work correctly in UDK (no more FPS fudging)
-- progress reporting while processing smooth groups
-- more informative logging
-- code refactor for clarity and modularity
-    - naming conventions unified to use lowercase_with_underscore
-    - C++ datatypes and PSK/PSA classes remain CamelCaseStyle for clarity
-    - names such as 'ut' and 'unreal' unified to 'udk'
-    - simplification of code structure
-    - removed legacy code paths
-
-USAGE
-
-This version of the exporter is more selective over which bones are considered
-part of the UDK skeletal mesh, and allows greater flexibility for adding
-control bones to aid in animation.
-
-Taking advantage of this script requires the following methodology:
-
-    * Place all exportable bones into a bone hierarchy extending from a single
-    root. This root bone must have use_deform enabled. All other root bones
-    in the armature must disable use_deform. *
-
-The script searches for a root bone with use_deform set true and considers all
-bones parented to it as part of the UDK skeletal mesh. Thus only these bones
-are exported and all other bones are ignored.
-
-This removes many restrictions on the rigger/animator, who can add control
-bone hierarchies to the rig, and keyframe any element into actions. With this
-approach you can build complex animation rigs in a similar vein to the Rigify
-add-on, by Nathan Vegdahl. However...
-
-    * Rigify is incompatible with this script *
-
-Rigify interlaces deformer bones within a single hierarchy making it difficult
-to deconstruct for export. It also splits some meta-rig bones into multiple
-deformer bones (bad for optimising a game character). I had partial success
-writing a parser for the structure, but it was taking too much time and,
-considering the other issues with Rigify, it was abandoned.
-"""
-# ===========================================================================
-
-import bmesh
-import os
-import time
-import bpy
-import mathutils
-import math
-import operator
-import sys
-from bpy.props import (
-        BoolProperty,
-        CollectionProperty,
-        EnumProperty,
-        FloatProperty,
-        IntProperty,
-        StringProperty,
-        )
-from bpy.types import (
-        Operator,
-        Panel,
-        UIList,
-        PropertyGroup,
-        AddonPreferences,
-        )
-from struct import pack
-
-
-# REFERENCE MATERIAL JUST IN CASE:
-#
-# U = x / sqrt(x^2 + y^2 + z^2)
-# V = y / sqrt(x^2 + y^2 + z^2)
-#
-# Triangles specified counter clockwise for front face
-#
-# defines for sizeofs
-SIZE_FQUAT = 16
-SIZE_FVECTOR = 12
-SIZE_VJOINTPOS = 44
-SIZE_ANIMINFOBINARY = 168
-SIZE_VCHUNKHEADER = 32
-SIZE_VMATERIAL = 88
-SIZE_VBONE = 120
-SIZE_FNAMEDBONEBINARY = 120
-SIZE_VRAWBONEINFLUENCE = 12
-SIZE_VQUATANIMKEY = 32
-SIZE_VVERTEX = 16
-SIZE_VPOINT = 12
-SIZE_VTRIANGLE = 12
-
-MaterialName = []
-
-
-# Python 3 doesn't have cmp anymore
-def cmp(a, b):
-    return (a > b) - (a < b)
-
-
-# ===========================================================================
-# Custom exception class
-# ===========================================================================
-class Error(Exception):
-
-    def __init__(self, message):
-        self.message = message
-
-
-# ===========================================================================
-# Verbose logging with loop truncation
-# ===========================================================================
-def verbose(msg, iteration=-1, max_iterations=4, msg_truncated="..."):
-
-    if bpy.context.scene.udk_option_verbose is True:
-        # limit the number of times a loop can output messages
-        if iteration > max_iterations:
-            return
-        elif iteration == max_iterations:
-            print(msg_truncated)
-            return
-
-        print(msg)
-
-
-# ===========================================================================
-# Log header/separator
-# ===========================================================================
-def header(msg, justify='LEFT', spacer='_', cols=78):
-
-    if justify == 'LEFT':
-        s = '{:{spacer}<{cols}}'.format(msg + " ", spacer=spacer, cols=cols)
-
-    elif justify == 'RIGHT':
-        s = '{:{spacer}>{cols}}'.format(" " + msg, spacer=spacer, cols=cols)
-
-    else:
-        s = '{:{spacer}^{cols}}'.format(" " + msg + " ", spacer=spacer, cols=cols)
-
-    return "\n" + s + "\n"
-
-
-# ===========================================================================
-# Generic Object->Integer mapping
-# the object must be usable as a dictionary key
-# ===========================================================================
-class ObjMap:
-
-    def __init__(self):
-        self.dict = {}
-        self.next = 0
-
-    def get(self, obj):
-        if obj in self.dict:
-            return self.dict[obj]
-        else:
-            id = self.next
-            self.next = self.next + 1
-            self.dict[obj] = id
-            return id
-
-    def items(self):
-        getval = operator.itemgetter(0)
-        getkey = operator.itemgetter(1)
-        return map(getval, sorted(self.dict.items(), key=getkey))
-
-
-# ===========================================================================
-# RG - UNREAL DATA STRUCTS - CONVERTED FROM C STRUCTS GIVEN ON UDN SITE
-# provided here: http://udn.epicgames.com/Two/BinaryFormatSpecifications.html
-# updated UDK (Unreal Engine 3): http://udn.epicgames.com/Three/BinaryFormatSpecifications.html
-# ===========================================================================
-class FQuat:
-
-    def __init__(self):
-        self.X = 0.0
-        self.Y = 0.0
-        self.Z = 0.0
-        self.W = 1.0
-
-    def dump(self):
-        return pack('ffff', self.X, self.Y, self.Z, self.W)
-
-    def __cmp__(self, other):
-        return cmp(self.X, other.X) or \
-               cmp(self.Y, other.Y) or \
-               cmp(self.Z, other.Z) or \
-               cmp(self.W, other.W)
-
-    def __hash__(self):
-        return hash(self.X) ^ hash(self.Y) ^ hash(self.Z) ^ hash(self.W)
-
-    def __str__(self):
-        return "[%f,%f,%f,%f](FQuat)" % (self.X, self.Y, self.Z, self.W)
-
-
-class FVector(object):
-
-    def __init__(self, X=0.0, Y=0.0, Z=0.0):
-        self.X = X
-        self.Y = Y
-        self.Z = Z
-
-    def dump(self):
-        return pack('fff', self.X, self.Y, self.Z)
-
-    def __cmp__(self, other):
-        return cmp(self.X, other.X) or \
-               cmp(self.Y, other.Y) or \
-               cmp(self.Z, other.Z)
-
-    def _key(self):
-   

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-extensions-cvs mailing list