Jump to content

Make SMP on SE Great again (Just using BS ,Nifskope ,Notepad++)


Recommended Posts

Hi everyone  I'm Xing this is my first post, I want to share some of my experiences in converting PE physics to SMP physics.

 

The reason for the post is because there are some people using English who came to me to ask me about the method.
(Although I have already recorded it, I want to turn my way into English again.)

 

So I recorded my method here. I don’t need to spend time to answer them one by one.

 

(I from Taiwan and use Traditional Chinese So if you want to see the Traditional Chinese version, please click on the link below.)

 

Articles I shared six months ago

 

First of all, I want to apologize some things 

 

1.My native language is not English, so I am not very good at it.

 

2.About the title is just my little joke ,I am sorry if I am offended to the American people.

 

3.I am not a 3D art major,All my understanding is from the Internet to find and experience accumulation
if there is an error in the wording, i'm so sorry and please leave a message and let me know that I will fix it soon.

 

 

I want to thank and attach my source first.
Thanks to these great people and HDT for bringing beautiful physics to Skyrim

:
Skyrim SE: How to Convert HDT PE Armor to HDT-SMP Tutorial

 

[TUTORIAL] How to make HDT meshes work with HDT SMP

 

A Guide to HDT-SMP Users/Modders

 

 

Let's start

 

The tools you need are: Bodyslide v4.7.1++  ,NifSkope, SSE NIF Optimizer, notepad++
And have some basic understanding of bodyslide and casually find a piece of equipment with physical bones

 

 

 

1. What is HDT-PE physical equipment
 

Spoiler

 

When loading the physical equipment from the LE version, first unpack and open the nif model file in the mesh folder, and use nifskope to see if the part you want to be physically added has been added with additional bones. For example, click on the left side of the model to see the cloak 

 

53ed4b3a6201fb04649f0e23c97fb151.jpg.42a70e87d014a3ef755595d2c921679d.jpg

 

Pull down to see if there is a new bone NiNode

 

a2897b9fac0f2318fbd8098d023e37e9.jpg.6c7bb63f4b3e2ebf39628f7023e8c6f5.jpg

 

 

If you have any, you can use SSE NIF Optimizer to brush it again. Also remember to check textures if there are any problems.

f0216dba975bcdd3a7491ba0b7782150.jpg.7cb81bdc91c2f9d3d606a74238254af0.jpg

 

, unplug the XML file, enter the game test to see if it will be properly equipped on the character.
This is a success (the cloak on the back of the character appears in the correct position)

 

392006cfc5d52194345c24b0461eb5c2.jpg.be3481df8557cfd6d47b8ba962a98629.jpg

 

and if not
and encountered infinite stretching or equipment reversal
then must do additional processing

 

infinite stretching:
77ea699cfb5b8127ae7508dd33f81c5b.jpg.fc6af035afe9f91e07215b0afebdc564.jpg
 

equipment reversal:
06bca7f1bcf11e5d0188c86f18c45ab5.jpg.a5f74e7bffbfc252da59777e402989ad.jpg

 

 


2.  Special situation related (resolving the problem of reversal)
   
 

Spoiler

My idea is:
Since the equipment is reversed, it is very likely that the position of the bone is wrong.

So I took a bunch of correct bones and then connected the extra physical bones in series.
Then put the meat (meshes) back

 

     06bca7f1bcf11e5d0188c86f18c45ab5.jpg.a5f74e7bffbfc252da59777e402989ad.jpg

   

      In short, grow bones first, then long meat.

 

 1. Open two windows with nifskope (nifskope allows the same nif to do this)


be5906fafb04d840053dc64d0e3320a4.jpg.52c0b43c63f4d968a5615fd223e1dba9.jpg

 

2. A nif file includes bones (NINode) and mesh (BSTrishape) (so-called bones and meat).

4d04c3b05e28bb200fa0c0089c9de63d.jpg.8f361c13f47b340c5ffc0a2fb7ad5e47.jpg
 

3.
I deleted the bone of a window (called A window)
Then build the skeleton one by one from another window (B window) and then go on the meat.The special and convenient part of this equipment is that as long as I pull the root node into the NPC node

 

 Delete the entire skeleton of the A window

8711890b963db5ac995687eb304f4cc7.jpg.b3ec40351dc52b4372d1eccb66bf7af9.jpg
 

Go to the B window and drop down to find the NPC  Ninode under the Ninode called skeleton.nif and copy it

f8e4c80ac6b25f0aa62662476dd3819c.jpg.73a20a9fb766858a3b143a1d4da7f956.jpg

Right click on the top layer 0NiNode of the A window and paste it (Bone establishment is complete)

e21ae725457077c966659dee87652102.jpg.7bf935c314cba5cbc4621d18a304f876.jpg

Paste the meshes of the B window (meat, BSTriShape),
And remove the original mesh of A window (meat, BSTriShape) and save 

ec5e5dc5059897908cbfee86ebf57330.jpg.745f1bfbaf80869110b75225b829a261.jpg

Compare the A and B windows after the completion

as.jpg.3df1f2ea5d9e3591a3516164fb4b8329.jpg

Can find the B window skeleton. I pulled the NPC Ninode up as the parent node.

 

This will allow you to test it in the game.

The benefits of doing this are:
You don't need to reconnect the bones to display properly
Then there is no need to delete the physical bones (you can switch to SMP), you can display them in the game.

 


3.  Special situation related (resolving the stretch caused by mesh mesh over 80 bones)
 

Spoiler

 

  77ea699cfb5b8127ae7508dd33f81c5b.jpg.fc6af035afe9f91e07215b0afebdc564.jpg

  The new version of BS 4.7.1++ can solve this problem
  First, please go to the NXM to download the latest version.

BodySlide and Outfit Studio
 

 

 

The trick is to use separate vertices in the OS!!
 

  • First brush the SSE NIF Optimizer and find more than 80 of your bones will stretch the equipment nif
    1.jpg.08f164021c9877b31f1252a174cca872.jpg
     
  • Open the new version of Outfit Sttudio to load your  NIF
    2.jpg.d69717d3a512fcf934f8b3b5f36afab2.jpg
     
  • The mesh on the right will be hidden except for more than 80.Easy to brush vertex
    3.jpg.d72641085ffe9122a2130e1fb1a48753.jpg
     
  • Click to display the vertices so you know where to brush or brush over (green dots will be displayed on the grid)
    4.jpg.d670acfe102c923e9c118c372477b210.jpg
     
  • Use the Mask Vertex tool to select the mesh you want to separate
    5.jpg.42e69a8710fbb93602a737126949960e.jpg

     
  • After obscuring, right click on the right window and select to separate the vertices.
    6.jpg.b4873b80b3093806151ab7494c5dedb1.jpg
     
  • name it
    7.jpg.477855cd22cd869502e5cd98dd8aedd8.jpg
     
  • Success will find that the rear mesh is split separately.
    8.jpg.c01cfa244b482cd9b5009d969ccfc4f2.jpg
     
  • Export completed with NifSkope view
    I compare the mesh  with 110 bones before and after.
    (The name is pc_female_avatar_regina_lower)
    Split into 4 mesh meshes (lowerF lowerB lowerR lowerL respectively)
    And the bones of each mesh are reduced to 80 or less.

    9.jpg.12da9af7eac7693ab1e43b170fae559b.jpg
     
  • How to modify XML
    EX:COCO 2B wedding skirt
    Skirt I cut to skirt and skirt_2

    10.jpg.f92b57c894a58766194f26c812138a0c.jpg
     
  • Then come to xml to copy a skirt declaration to skirt_2 (tag remembers to change), and set to no collision with skirt and itself
    11.jpg.1ed26d8157489abdedf7cd526e747808.jpg
     
  • Skirt also remember to modify it.
    12.jpg.10de0a88372cea42fa306b5199eb10d7.jpg

 

 

4.Give the collision Object, and change NistringExtraData

 

Spoiler

 

The collision Object is simply to make the equipment do not want to have a mold-piercing situation.
(That is, the magical situation in which the equipment does not want to run into the body, the result of the double horsetail movement and the brain fusion)
So give these equipment collision Object

Collision Object
 

I will provide some collision bodies underneath.Then pay attention to some rules of nifskope

:

  •  In short, grow bones first, then long meat.(first Ninode then BsTrishape)
     
  • It is recommended that on the top of the object list :the parent node (0 ninode) to  action of Paste Branch
     
  • When the Paste Branch error message appears in the process of posting, please don't rush to close the message immediately, see where the node problem indicated on the message is.
    Going to find the corresponding node to copy

     
  • Only Bstrishape can be attached to the same type of Bstrishape.nif
    So remember to first brush the Optimizer and convert the model nif to SE.

     

Giving collision body:

 

  1. Right copy branch642092300_2019-06-15151909.png.00e57de111d695af9173c6ec783b3ea4.png
     
  2. Encountered no bone nodes

    524838689_2019-06-15152011.png.f19b99cae94a6b6bcb66e965b6fd5bf0.png
     
  3. Find the bone node to the original collision body model nif and copy
    920577830_2019-06-15152151.png.58d151256677c427c18cd0a9bdcdf218.png
  4. Paste the bone node and paste the collision mesh
    1844562963_2019-06-15152305.png.e9f79a4f20e4076c931ddcd0346951db.png


Change to NistringExtraData:(Note that it cannot be NistringsExtraData (more than one s)

  1. Use convert to go and rename HDT Skinned Mesh Physics Object
    13.jpg.0aa1efff76765570faf2b07e57ffa9f6.jpg

    14.jpg.976114b3c727e4a5213e4734e932a05f.jpg


    The xml path is set and the archive is completed.
    15.jpg.a4da2836f06709815743e1c98236f988.jpg

 



5.The process of writing smp (you can copy it again and then modify it)

Spoiler

 

Some of the following terms are self-understanding.And quote explanations from most other articles
If you have a 3D modeling professional, feel that the words I use are not accurate enough and misunderstood, please also forgive me.
Also be sure to open your own nif file to write against the bone node.

 

 

Or please refer to this directly

TUTORIAL] How to make HDT meshes work with HDT SMP

EX:

1.jpg.02e97eda98f737e4dd932789d00371e7.jpg

 

1. Initial file declaration

Spoiler

 



<?xml version="1.0" encoding="UTF-8"?>
<system xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="description.xsd">

 

 

 

 

2. Declare a ground collision object (if have)   <!--For the advanced collision parameters, please see section 7-->
Spoiler

 



<per-triangle-shape name="VirtualGround">              <!--Declaration of shapedata as collision body -->
        <margin>1</margin>                            <!--Simply say to increase the thick road of the rigid body, that is, increase the collision distance, prevent broken skin -->
        <prenetration>4</prenetration>              <!--(per-triangle-shape unique, per-vertex-shape cannot be used) -->
        <shared>private</shared>
        <tag>ground</tag>                             <!--tag (used to abbreviate Value such as VirtualGround abbreviated to ground)-->
</per-triangle-shape>

 


 
3. Declare kinematic bones
Kinematic Bones are the bones which have skin modifier but are not physics enabled. You have to look for it in the .nif file. In this case:
Spoiler

Open Cloak's BsTrishape and find the node at the beginning of NPC to lock the bone nodes of the body.
2.jpg.9d7f5d023d0096461f6ae2fec78aa67e.jpg

 



    <bone name="NPC L Breast01"/>
    <bone name="NPC R Breast01"/>
    <bone name="NPC L Calf01"/>
    <bone name="NPC R Calf01"/>
    <bone name="NPC L Thigh01"/>
    <bone name="NPC R Thigh01"/>
    <bone name="NPC L Breast"/>
    <bone name="NPC R Breast"/>
    <bone name="NPC R Calf [RClf]"/>
    <bone name="NPC L Calf [LClf]"/>
    <bone name="NPC Spine [Spn0]"/>
    <bone name="NPC Spine1 [Spn1]"/>
    <bone name="NPC Spine2 [Spn2]"/>
    <bone name="NPC Pelvis [Pelv]"/>
    <bone name="NPC R Thigh [RThg]"/>
    <bone name="NPC L Thigh [LThg]"/>
    <bone name="NPC R Butt"/>
    <bone name="NPC L Butt"/>
    <bone name="NPC Belly"/>
    <bone name="NPC Neck [Neck]"/>
    <bone name="NPC Head [Head]"/>
    <bone name="NPC R Clavicle [RClv]"/>
    <bone name="NPC R UpperArm [RUar]"/>
    <bone name="NPC R Forearm [RLar]"/>
    <bone name="NPC R Hand [RHnd]"/>
    <bone name="NPC R ForearmTwist1 [RLt1]"/>
    <bone name="NPC R ForearmTwist2 [RLt2]"/>
    <bone name="NPC R UpperarmTwist1 [RUt1]"/>
    <bone name="NPC R UpperarmTwist2 [RUt2]"/>
    <bone name="NPC L Clavicle [LClv]"/>
    <bone name="NPC L UpperArm [LUar]"/>
    <bone name="NPC L Forearm [LLar]"/>
    <bone name="NPC L Hand [LHnd]"/>
    <bone name="NPC L ForearmTwist1 [LLt1]"/>
    <bone name="NPC L ForearmTwist2 [LLt2]"/>
    <bone name="NPC L UpperarmTwist1 [LUt1]"/>
    <bone name="NPC L UpperarmTwist2 [LUt2]"/>
    <bone name="NPC L Pauldron"/>
    <bone name="NPC R Pauldron"/>

(This is my own lazy, so copy it directly and lock all the body bones, you don't have to be like me)

 

 

 

 

 

4. Body collision body declaration (if there is no need to declare, for example, earrings, small objects do not need to collide with other things) 
 <!--For the advanced collision parameters, please see another section -->
Spoiler

 



<per-triangle-shape name="body cloak">                      <!--Declaration of shapedata as collision body -->
    <margin>1</margin>                                      <!--Simply say to increase the thick road of the rigid body, that is, increase the collision distance, prevent broken skin -->
    <priority>0</priority>                   <!--The higher the collision density, the higher the priority, the range of values [-2147483648, 2147483647]-->
    <prenetration>2</prenetration>                 <!--- "prenetration here was probably meant to be bullets "penetration" property" I don't know what it really is...--->
    <shared>private</shared>         <!--private, internal, public: the effect of collision physical range. "private" for only this xml , "internal" for this character, "public" for all collision object. -->
    <tag>body cloak</tag>
    <no-collide-with-tag>body</no-collide-with-tag>            <!---(Indicating that it does not collide with the tag name XXX)--->
    <no-collide-with-tag>body cloak</no-collide-with-tag>  
    <no-collide-with-tag>ground</no-collide-with-tag>
    <no-collide-with-tag>body skirt</no-collide-with-tag>
</per-triangle-shape>

(If SMP physics does not indicate that it does not collide with anyone, the default is to collide every one)

 

 

 

 


5. Declare the anchor point (Just like a rope, you have to grab a little bit of the rope to shake it.)

 

Spoiler

 

Open NPC's NiNode to find the special bone of the cloak. The anchor is basically XXXX01 or XXX 1
 

3.jpg.2df653847340f42b225d98023b849d51.jpg

 



<bone name="Cloak L 1"/>
<bone name="Cloak 1"/>
<bone name="Top LL 1"/>
<bone name="Colar L 1"/>
<bone name="Colar R 1"/>
<bone name="Top RR 1"/>
<bone name="Top RL 1"/>
<bone name="Top LR 1"/>
<bone name="SkirtBBone01"/>

 

 

 

 

 

6. Basic physical parameters given to physical bones  

Spoiler

 



<bone-default>
    <mass>2</mass>                          <!--physical mass unit-->
    <inertia x="20" y="20" z="20"/>          <!--Inertia-->
    <centerOfMassTransform>
      <basis x="0" y="0" z="0" w="1"/>      
      <origin x="0" y="0" z="0"/>
    </centerOfMassTransform>
    <linearDamping>0.5</linearDamping>                   <!--The linear acceleration of the bone node is between (0.1) -->
    <angularDamping>0.5</angularDamping>                  <!--angular acceleration between (0.1) -->
    <friction>0</friction>                                <!--Coefficient of friction-->
    <rollingFriction>0</rollingFriction>                      <!--Rotating friction coefficient-->
    <restitution>0</restitution>                             <!--Bounce coefficient-->
  </bone-default>

 

 

 


7. Physical bone description (see the expansion of the anchor point)
 

Spoiler

 

4.jpg.0ae0ae1c3b42664a79bed7ce392d8dc6.jpg

 



<bone name="Cloak L 2"/>
<bone name="Cloak 2"/>
<bone name="Top LL 2"/>
<bone name="Colar L 2"/>
<bone name="Colar R 2"/>
<bone name="Top RR 2"/>
<bone name="Top RL 2"/>
<bone name="Top LR 2"/>
<bone name="SkirtBBone02"/>

<bone name="Cloak L 3"/>
<bone name="Cloak 3"/>
<bone name="Top LL 3"/>
<bone name="Top RR 3"/>
<bone name="SkirtBBone03"/>

<bone name="Cloak L 4"/>
<bone name="Cloak 4"/>
<bone name="Top LL 4"/>
<bone name="Top RR 4"/>

<bone name="Cloak L 5"/>
<bone name="Cloak 5"/>

<bone name="Cloak L 6"/>
<bone name="Cloak 6"/>

<bone name="Cloak L 7"/>
<bone name="Cloak 7"/>

<bone name="Cloak L 8"/>
<bone name="Cloak 8"/>

 

 

 

 

 

8. Constrain the physical bone node parameters  

 

Spoiler

 



<generic-constraint-default>
    <frameInB>
      <basis x="0" y="0" z="0" w="1"/>
      <origin x="0" y="0" z="0"/>
    </frameInB>
    <useLinearReferenceFrameA>false</useLinearReferenceFrameA>
    <linearLowerLimit x="0" y="0" z="0"/>            <!--The lower bound of the linear constraint -->
    <linearUpperLimit x="0" y="0" z="0"/>            <!--The upper bound of the linear constraint (the lower bound of the constraint cannot be greater than the upper bound)-->
    <angularLowerLimit x="0" y="-0,2" z="-0,5"/>      <!--Rotation constraint lower bound -->
    <angularUpperLimit x="0" y="0,5" z="0,5"/>        <!--Rotation constraint upper bound (the lower bound of the constraint cannot be greater than the upper bound)-->
    <linearStiffness x="0" y="0" z="0"/>               <!--linear spring coefficient -->
    <angularStiffness x="0" y="0" z="0"/>             <!--Angle spring coefficient -->
    <linearDamping x="0" y="0" z="0"/>                <!--Linear spring damping -->
    <angularDamping x="0" y="0" z="0"/>               <!--Angle spring damping-->
    <linearEquilibrium x="0" y="0" z="0"/>
    <angularEquilibrium x="0" y="0" z="0"/>
  </generic-constraint-default>  

(I basically only change the upper and lower bounds of linear and rotation conventions)
And this is probably the place where the impact will be clearly seen. If you are interested, please refer to the article I quoted above.)

 

 

 


9. Constrain the physical bone description (that is, connect the bones one by one from the anchor point)
 

Spoiler

 



<constraint-group>
        <generic-constraint bodyA="Cloak L 2" bodyB="Cloak L 1"/>
        <generic-constraint bodyA="Cloak L 3" bodyB="Cloak L 2"/>
        <generic-constraint bodyA="Cloak L 4" bodyB="Cloak L 3"/>
        <generic-constraint bodyA="Cloak L 5" bodyB="Cloak L 4"/>
        <generic-constraint bodyA="Cloak L 6" bodyB="Cloak L 5"/>
        <generic-constraint bodyA="Cloak L 7" bodyB="Cloak L 6"/>
        <generic-constraint bodyA="Cloak L 8" bodyB="Cloak L 7"/>
    </constraint-group>

    <constraint-group>
        <generic-constraint bodyA="Cloak 2" bodyB="Cloak 1"/>
        <generic-constraint bodyA="Cloak 3" bodyB="Cloak 2"/>
        <generic-constraint bodyA="Cloak 4" bodyB="Cloak 3"/>
        <generic-constraint bodyA="Cloak 5" bodyB="Cloak 4"/>
        <generic-constraint bodyA="Cloak 6" bodyB="Cloak 5"/>
        <generic-constraint bodyA="Cloak 7" bodyB="Cloak 6"/>
        <generic-constraint bodyA="Cloak 8" bodyB="Cloak 7"/>
    </constraint-group>

    <constraint-group>
        <generic-constraint bodyA="Top LL 2" bodyB="Top LL 1"/>
        <generic-constraint bodyA="Top LL 3" bodyB="Top LL 2"/>
        <generic-constraint bodyA="Top LL 4" bodyB="Top LL 3"/>
    </constraint-group>

    <constraint-group>
        <generic-constraint bodyA="Top RR 2" bodyB="Top RR 1"/>
        <generic-constraint bodyA="Top RR 3" bodyB="Top RR 2"/>
        <generic-constraint bodyA="Top RR 4" bodyB="Top RR 3"/>
    </constraint-group>

    <constraint-group>
        <generic-constraint bodyA="SkirtBBone02" bodyB="SkirtBBone01"/>
        <generic-constraint bodyA="SkirtBBone03" bodyB="SkirtBBone02"/>
    </constraint-group>

    <constraint-group>
        <generic-constraint bodyA="Colar L 2" bodyB="Colar L 1"/>
    </constraint-group>

    <constraint-group>
        <generic-constraint bodyA="Colar R 2" bodyB="Colar R 1"/>
    </constraint-group>

    <constraint-group>
        <generic-constraint bodyA="Top RL 2" bodyB="Top RL 1"/>
    </constraint-group>

    <constraint-group>
        <generic-constraint bodyA="Top LR 2" bodyB="Top LR 1"/>
    </constraint-group>

 

 

 

10. Other collision body declarations (per-vertex-shape)   <!--For the advanced collision parameters, please see  section 7 -->

(The cloak, hair skirts, etc. mainly want to make them collide)
 

Spoiler

 



<per-vertex-shape name="cloak">
    <margin>1</margin>                  <!--The radius of the collision sphere generated at each bone node cannot exceed 2.5-->               
    <priority>1</priority>
    <shared>private</shared>                    
    <tag>cloak</tag>
    
    <no-collide-with-tag>cloak</no-collide-with-tag>          <!--Personal ideas basically collision body itself is better not to have a collision -->
    <no-collide-with-tag>hair</no-collide-with-tag>
    <no-collide-with-tag>body</no-collide-with-tag>
    <no-collide-with-tag>body skirt</no-collide-with-tag>
    
    <weight-threshold bone="Cloak 1">1</weight-threshold>        <!--For the advanced collision parameters, please see another section -->
    <weight-threshold bone="Top LL 1">1</weight-threshold>
    <weight-threshold bone="Top LR 1">1</weight-threshold>
    <weight-threshold bone="Cloak L 1">1</weight-threshold>
    <weight-threshold bone="Colar L 1">1</weight-threshold>
    <weight-threshold bone="Colar R 1">1</weight-threshold>
    <weight-threshold bone="Top RR 1">1</weight-threshold>
    <weight-threshold bone="Top RL 1">1</weight-threshold>
    <weight-threshold bone="Cloak 2">0.5</weight-threshold>
    <weight-threshold bone="Cloak 3">0.5</weight-threshold>
    <weight-threshold bone="Cloak 4">0.5</weight-threshold>
    <weight-threshold bone="Cloak 5">0.5</weight-threshold>
    <weight-threshold bone="Cloak 6">0.5</weight-threshold>
    <weight-threshold bone="Cloak 7">0.5</weight-threshold>
    <weight-threshold bone="Cloak 8">0.5</weight-threshold>
    <weight-threshold bone="Cloak L 2">0.5</weight-threshold>
    <weight-threshold bone="Cloak L 3">0.5</weight-threshold>
    <weight-threshold bone="Cloak L 4">0.5</weight-threshold>
    <weight-threshold bone="Cloak L 5">0.5</weight-threshold>
    <weight-threshold bone="Cloak L 6">0.5</weight-threshold>
    <weight-threshold bone="Cloak L 7">0.5</weight-threshold>
    <weight-threshold bone="Cloak L 8">0.5</weight-threshold>
    <weight-threshold bone="Top LL 2">0.5</weight-threshold>
    <weight-threshold bone="Top LL 3">0.5</weight-threshold>
    <weight-threshold bone="Top LL 4">0.5</weight-threshold>
    <weight-threshold bone="Top RR 2">0.5</weight-threshold>
    <weight-threshold bone="Top RR 3">0.5</weight-threshold>
    <weight-threshold bone="Top RR 4">0.5</weight-threshold>
    <weight-threshold bone="Top LR 2">0.5</weight-threshold>
    <weight-threshold bone="Top RL 2">0.5</weight-threshold>
    <weight-threshold bone="Colar L 2">0.5</weight-threshold>
    <weight-threshold bone="Colar R 2">0.5</weight-threshold>
    
</per-vertex-shape>

 

 

 


11. The End

Spoiler

 



</system>

 

 

 

 

 

QW8v2UT.gif

 

 

 6.Simple version (only shaking) xml writing

 

   Please refer to Section 5 for the meaning of each paragraph.


 

Spoiler

 

 EX:
5.jpg.560a2937cad58ee6aa9598349cddbe4f.jpg
 

 

initial file declaration:

 


<?xml version="1.0" encoding="UTF-8"?>
<system xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="description.xsd">

 

Declare kinematic bones:
 


<bone name="NPC Pelvis [Pelv]"/>

 

 Declare the anchor point:

 


    <bone name="Lower2B 1"/>
    <bone name="Lower1BR 1"/>
    <bone name="Lower1BC 1"/>
    <bone name="Lower1BL 1"/>

 

Basic physical parameters given to physical bones :
 


<bone-default>
    <mass>1</mass>
    <inertia x="17" y="17" z="17" />
    <centerOfMassTransform>
    <basis x="0" y="0" z="0" w="1" />
    <origin x="0" y="0" z="0" />
    </centerOfMassTransform>
    <linearDamping>0.98</linearDamping>
    <angularDamping>0.6</angularDamping>
    <friction>0</friction>
    <restitution>0</restitution>
</bone-default>

 

Physical bone description:

 


    <bone name="Lower2B 2"/>
    <bone name="Lower1BR 2"/>
    <bone name="Lower1BC 2"/>
    <bone name="Lower1BL 2"/>

    <bone name="Lower2B 3"/>
    <bone name="Lower1BR 3"/>
    <bone name="Lower1BC 3"/>
    <bone name="Lower1BL 3"/>

    <bone name="Lower2B 4"/>

 

Constrain the physical bone node parameters:

 


<generic-constraint-default>
        <frameInB>
        <basis x="0" y="0" z="0" w="1" />
        <origin x="0" y="0" z="0" />
        </frameInB>
        <useLinearReferenceFrameA>false</useLinearReferenceFrameA>
        <linearLowerLimit x="0" y="0" z="0" />
        <linearUpperLimit x="0" y="0" z="0" />
        <angularLowerLimit x="-0.1" y="-0.1" z="-0.1" />
        <angularUpperLimit x="0.1" y="0.01" z="0.1" />
        <linearStiffness x="0" y="0" z="0" />
        <angularStiffness x="0" y="0" z="0" />
        <linearDamping x="0" y="0" z="0" />
        <angularDamping x="0" y="0" z="0" />
        <linearEquilibrium x="0" y="0" z="0" />
        <angularEquilibrium x="0" y="0" z="0" />
    </generic-constraint-default>
    

 

Constrain the physical bone description:

 


<constraint-group>
        <generic-constraint bodyA="Lower2B 2" bodyB="Lower2B 1"/>
        <generic-constraint bodyA="Lower2B 3" bodyB="Lower2B 2"/>
        <generic-constraint bodyA="Lower2B 4" bodyB="Lower2B 3"/>
    </constraint-group>

    <constraint-group>
        <generic-constraint bodyA="Lower1BR 2" bodyB="Lower1BR 1"/>
        <generic-constraint bodyA="Lower1BR 3" bodyB="Lower1BR 2"/>
    </constraint-group>

    <constraint-group>
        <generic-constraint bodyA="Lower1BC 2" bodyB="Lower1BC 1"/>
        <generic-constraint bodyA="Lower1BC 3" bodyB="Lower1BC 2"/>
    </constraint-group>

    <constraint-group>
        <generic-constraint bodyA="Lower1BL 2" bodyB="Lower1BL 1"/>
        <generic-constraint bodyA="Lower1BL 3" bodyB="Lower1BL 2"/>
    </constraint-group>


 

The End:

 


</system>

 

Completed xml

Before (stiff):
Q2WCoZg.gif

 

After (more vivid):

yRQBIpn.gif

 

 



7.Talking about SMP Collision
 

Spoiler

 

Once again, I am not a professional art 3D, the article is all I am looking for online.
Please forgive me if you have any errors or misunderstandings, and hope to leave a message to let me know.
And thank you again for reading.


Discuss these parameters separately:
 

  • <no-collide-with-
  • <shared>
  •    <weight-threshold bone
  • <margin>
  • <mass>

First clarify the collision of the HDT-SMP physical system.
When the collision is not explicitly prohibited,HDT-SMP is the default for any collision object  can collide with each other (which  mesh  declared as a collision object(per-vertex ...or per-triangle...))

So need to use

<no-collide-with-
to prohibit unnecessary collisions with other collision objects

But another problem is coming. Maybe today I have a new physical equipment that you want to mix and wear.
But it’s always impossible to download new physical equipment every time.
Have to write a new <no-collide-with to avoid unnecessary collisions.
Simply speaking, I hope that the collision only works in this part of the equipment nif, does not affect another mashup equipment nif 

 

<shared>
is used to solve this problem.


<shared>private</shared>.<shared>internal</shared>.<shared>public</shared>
private" for only this xml , "internal" for this character, "public" for all collision object.

The default is "public", if you don't want it to interact with other roles, you should set it to "internal" or "private"



The following two videos simply show private and public

<shared>private</shared>:

 

 

<shared>public</shared>:

It can be found that the mesh of the cloak and the another character hand 's mesh have different effects due to different parameters.
With a little imagination, you can do many things, such as letting your hand collide with  chest.:triumph:


<weight-threshold bone:

(Personal idea: Imagine the innumerable small points above the mesh of the collision have different weights, each point will produce a collision, this parameter is used to ignore certain points)


<margin>:
(Personal thought: Imagine the innumerable small points above the mesh of the colliding object to generate the collision ball at each point. The smaller the radius, the closer it will be to the body (the other collision object will collide)

 

 

<mass>:

(Personal thoughts: (The higher the quality, the more obvious the exaggeration of the reaction)

 

   NOW please carefully observe the part of the skirt in the film.
 

  1. No added <weight-threshold bone

     
  2. <mass> quality is getting bigger

     
  3. Add the final result of all parameters
    Spoiler

     

    
    
    <per-vertex-shape name="1Cuirass1">
        <margin>0.3</margin>
        <priority>1</priority>
        <shared>private</shared>
        <tag>CU1</tag>
        <no-collide-with-tag>CU1</no-collide-with-tag>
        <no-collide-with-tag>CU2</no-collide-with-tag>
        <no-collide-with-tag>hands</no-collide-with-tag>
    
        <no-collide-with-bone>NPC L Forearm [LLar]</no-collide-with-bone>
        <no-collide-with-bone>NPC R Forearm [RLar]</no-collide-with-bone>
        <no-collide-with-bone>NPC L ForearmTwist1 [LLt1]</no-collide-with-bone>
        <no-collide-with-bone>NPC R ForearmTwist1 [RLt1]</no-collide-with-bone>
        <no-collide-with-bone>NPC L ForearmTwist2 [LLt2]</no-collide-with-bone>
        <no-collide-with-bone>NPC R ForearmTwist2 [RLt2]</no-collide-with-bone>
        <no-collide-with-bone>NPC L Calf [LClf]</no-collide-with-bone>
        <no-collide-with-bone>NPC R Calf [RClf]</no-collide-with-bone>
        <no-collide-with-bone>NPC L Pussy02</no-collide-with-bone>
        <no-collide-with-bone>NPC R Pussy02</no-collide-with-bone>
        <no-collide-with-bone>NPC R RearCalf [RrClf]</no-collide-with-bone>
        <no-collide-with-bone>NPC L RearCalf [LrClf]</no-collide-with-bone>
        <no-collide-with-bone>NPC L FrontThigh</no-collide-with-bone>
        <no-collide-with-bone>NPC R FrontThigh</no-collide-with-bone>
        <no-collide-with-bone>NPC L RearThigh</no-collide-with-bone>
        <no-collide-with-bone>NPC R RearThigh</no-collide-with-bone>
        <no-collide-with-bone>NPC Spine1 [Spn1]</no-collide-with-bone>
        <no-collide-with-bone>NPC Spine2 [Spn2]</no-collide-with-bone>
    
        <weight-threshold bone="NPC R Butt">3</weight-threshold>
        <weight-threshold bone="NPC L Butt">3</weight-threshold>
        <weight-threshold bone="NPC L Thigh">3</weight-threshold>
        <weight-threshold bone="NPC R Thigh">3</weight-threshold>
        <weight-threshold bone="NPC Spine [Spn0]">3</weight-threshold>
        <weight-threshold bone="NPC Pelvis [Pelv]">3</weight-threshold>
    
         <weight-threshold bone="_DBDODKAr_Cuirass_L1 1">1</weight-threshold>
          <weight-threshold bone="_DBDODKAr_Cuirass_L2 1">1</weight-threshold>
          <weight-threshold bone="_DBDODKAr_Cuirass_L3 1">1</weight-threshold>
          <weight-threshold bone="_DBDODKAr_Cuirass_L4 1">1</weight-threshold>
          <weight-threshold bone="_DBDODKAr_Cuirass_R1 1">1</weight-threshold>
          <weight-threshold bone="_DBDODKAr_Cuirass_R2 1">1</weight-threshold>
          <weight-threshold bone="_DBDODKAr_Cuirass_R3 1">1</weight-threshold>
          <weight-threshold bone="_DBDODKAr_Cuirass_R4 1">1</weight-threshold>
          <weight-threshold bone="_DBDODKAr_Cuirass_L1 2">1</weight-threshold>
          <weight-threshold bone="_DBDODKAr_Cuirass_L2 2">1</weight-threshold>
          <weight-threshold bone="_DBDODKAr_Cuirass_L3 2">1</weight-threshold>
          <weight-threshold bone="_DBDODKAr_Cuirass_L4 2">1</weight-threshold>
          <weight-threshold bone="_DBDODKAr_Cuirass_R1 2">1</weight-threshold>
          <weight-threshold bone="_DBDODKAr_Cuirass_R2 2">1</weight-threshold>
          <weight-threshold bone="_DBDODKAr_Cuirass_R3 2">1</weight-threshold>
          <weight-threshold bone="_DBDODKAr_Cuirass_R4 2">1</weight-threshold>
        <weight-threshold bone="_DBDODKAr_Cuirass_Fr1 1">0.2</weight-threshold>
          <weight-threshold bone="_DBDODKAr_Cuirass_Fr2 1">0.2</weight-threshold>
          <weight-threshold bone="_DBDODKAr_Cuirass_Fr3 1">0.01</weight-threshold>
          <weight-threshold bone="_DBDODKAr_Cuirass_Fr4 1">0.2</weight-threshold>
          <weight-threshold bone="_DBDODKAr_Cuirass_Fr5 1">0.2</weight-threshold>
        <weight-threshold bone="_DBDODKAr_Cuirass_Fr1 2">0.5</weight-threshold>
          <weight-threshold bone="_DBDODKAr_Cuirass_Fr2 2">0.01</weight-threshold>
          <weight-threshold bone="_DBDODKAr_Cuirass_Fr3 2">0.01</weight-threshold>
          <weight-threshold bone="_DBDODKAr_Cuirass_Fr4 2">0.01</weight-threshold>
          <weight-threshold bone="_DBDODKAr_Cuirass_Fr5 2">0.5</weight-threshold>
    </per-vertex-shape>         
      

     

           

            

 

 

 

The important thing about collision is that good collision settings will give the game better stability.
And reduce CPU consumption,
Sometimes the game will drop frames. It is possible that the scene has generated too many unnecessary collisions.
So good xml writing is very important


 

Thank you very much for reading.
Again, I am not a 3D art professional.
Nor is it the person who invented this method. I mainly share the personal way of transforming PE to SMP physics.
Also thanks to HDT and many great people who have paid for skyrim SE.
If you have any questions or want to discuss, please leave a message.
Or go to COCO or YuiH or MOD Piracy's Discord to find me.

P.S.Forgive my bad grammar again

 

P.S.And Bless Hong Kong
 

fix coco 2b wedding skirt SMP over 80 bones on SE   

 

 

                           

convert dint999 ' great hair pack &nbsp;to SMP SE and convert regina lower mesh over 80 bones     

 

 

Link to comment

This tutorial is very good with stuff like capes, necklaces, earrings, etc.

 

Sadly, this isn't enough for adding SMP to outfit and also supporting Bodyslide.

Link to comment
41 minutes ago, SunJeong said:

This tutorial is very good with stuff like capes, necklaces, earrings, etc.

 

Sadly, this isn't enough for adding SMP to outfit and also supporting Bodyslide.

Thank you
But the goal of this is to rewrite PE to SMP.
And adding new physical bones will take advantage of 3DMax
If you mean to do physical equipment BS file
In fact, it is very simple to do it by BS.

Link to comment
5 hours ago, Vortec said:

 Like what for example?.

Although the pe physical system and the smp physical system were developed by the same author, they did not implement the same method.Relatively speaking, the smp physical system has higher requirements on the position of the bone and whether the model corresponds.So porting is sometimes not as simple as rewriting xml. You need to re-edit the position of the bone.And add some uncommon constraint methods in the xml to ensure that the physical effects similar to pe are achieved.

Link to comment
3 hours ago, realclone said:

Although the pe physical system and the smp physical system were developed by the same author, they did not implement the same method.Relatively speaking, the smp physical system has higher requirements on the position of the bone and whether the model corresponds.So porting is sometimes not as simple as rewriting xml. You need to re-edit the position of the bone.And add some uncommon constraint methods in the xml to ensure that the physical effects similar to pe are achieved.

I am honored to receive your compliment.
Thank you also for the many physical equipment you shared in the skyrim community.
Thanks also for adding a lot of physical knowledge to me.
感謝暈倒大

Link to comment
18 hours ago, JafK1 said:

Thanks fro the info. Would you mind sharing dint hair pack conversion anywhere by chance?

OK i post only xml and nif file to you  the textures you should  download from the youtube website of the dint. After all, these files are from the great work of the dint.

 

P.S. Remember to change the Nistringdata location

00 Hair.7z

Link to comment
1 hour ago, s6517714 said:

OK i post only xml and nif file to you  the textures you should  download from the youtube website of the dint. After all, these files are from the great work of the dint.

 

P.S. Remember to change the Nistringdata location

00 Hair.7z

Thank you

Link to comment

@s6517714 Thanks for the tutorial, but, for some reason I'm running into problems. This might be the wrong place to ask for help but if you dont mind I'd appreciate a little? time. It's been awhile since I've done this and I never was a master at it regardless and now I'm stuck.

 

First the problem. I am wanting to edit this mod, The Amazing World of Bikini Armor to change the Biped Object for their thongs from slot 52 to slot 60. I'm doing this so their thongs will use the same slot that the panties use from Remodeled Armor.

 

To start I went into the CK to edit the leather thongs first, changing the biped object to 60. I save and open the game, of course it's invisible now since Id forgotten to change it with Nifskope as well. So I downloaded the most up to date version.

 

Then I opened up the nif file, I'll include it here for convenience.

TAWOBA Studded Thong 1.nif

 

I also looked for some tutorials, and found your tutorial as well... and again you say to find the NiTrishape. Yet I dont have that, I have one called BSTriShape instead. And when I click the drop down I dont see anything for BSDismemberSkinInstance as you can tell from the picture.

So, basically thats where I get stuck at... I dont know how to continue. Is there something wrong with the files from The Amazing World of Bikini Armor? I can see everything in the game just fine, I can see them in Bodyslide and in Outfit Studio. But I cant seem to edit them, do I need to convert them somehow first? Is it the wrong file?

 

If possible could you make another tutorial for how to do whatever I need to fix it? I have a lot more than just this one item to change so asking you to fix this one file for me wouldn't help really. I'm hoping you or someone else could teach me how to fish instead of giving me a fish... or, maybe point me to a tutorial that would help. Googling and YouTubing hasn't got me anywhere yet, I think most of them were old. So, you're really my last hope~

Link to comment
50 minutes ago, full_inu said:

Try edit slots in Outfit Studio.

How do we do that? This is the first time I've heard of it. I thought Outfit studio was mostly for making mesh fit the body better~ (looks into it)

 

I see there's an updated version of bodyslide... and a new option for partitions. Im afraid I don't know what to do with it tho since when I try to change it to 60 nothing happens~

Link to comment
On 6/24/2019 at 5:58 PM, unmog said:

How do we do that? This is the first time I've heard of it. I thought Outfit studio was mostly for making mesh fit the body better~ (looks into it)

 

I see there's an updated version of bodyslide... and a new option for partitions. Im afraid I don't know what to do with it tho since when I try to change it to 60 nothing happens~

Well, I didn't add it above. If there is no BSDismemberSkinInstance and only NiSkinInstance  situation
When there is BSDismemberSkinInstance and you want to change the slot ,then not only change the slot in CK or in Xedit but also change  Partition in Nifskope 
 

and when there is only NiSkinInstance  situation ,you can just change the slot in CK or in Xedit ,Because the NiSkinInstance type is compatible with any slot

and

This time you probably forgot to change the esp
The slot of armor and armor addon ,the two must be changed 

Let you see the results

xxc.png.d40a43305807ea93053518e50f94197a.png


NiSkinInstance type  only change esp slot can work

 

qq.jpg.4ce09c01b6c615ac31eb049503b131f9.jpg

Link to comment
9 hours ago, s6517714 said:

and when there is only NiSkinInstance  situation ,you can just change the slot in CK or in Xedit ,Because the NiSkinInstance type is compatible with any slot

and

This time you probably forgot to change the esp
The slot of armor and armor addon ,the two must be changed

Oh, thanks a lot. Yea that makes sense now, I wasn't able to find that piece of info anywhere. But it makes sense, I changed the addon to match the armor and bam its all working. Now you've put me on the right road to modding. :) 

Link to comment
12 hours ago, Le Serpent said:

I tried to convert this armor

 

The result isn't very good, the dress shakes all the time. I do the manipulation with bodyslide cause the dresses have more than 80 bones and i tried to edit the xml but this didn't work.

 

 

 

 

Please refer to step
3.  Special situation related (resolving the stretch caused by mesh mesh over 80 bones)
 
for make sure each mesh to contain less than 80 bones.
and check the step 7

7.Talking about SMP Collision

make sure your xml file  Is there any "weight-through bone "added under "collision shape data"?

Or find me in discord or pm me your nif and xml. I can help you check it out.

Link to comment
  • 2 weeks later...
6 hours ago, butthead6868 said:

I have no idea how we are supposed to do the "Reversal Problem" step as everytime i remove the skeleton npc branch, it deletes the whole mesh, and im not even sure how im supposed to create a skeleton for the mesh.

In the second step of the article
I keep stressing the instructions:
grow bones first, then long meat.
so you should open 2 Nifskope windows for this model nif: one for work and one for backup
and delete everything  in work one
then look for the bones without problems and pick them up one by one.
Then paste the mesh back from the backup file.

P.S.If you can't find a bone file without problems
Just go to step 4 and download the file in the collision object as the base bone and pick up the physical bones.
If you really don't understand, please pass your model nif to me.

Link to comment
  • 4 weeks later...
On ‎6‎/‎17‎/‎2019 at 9:19 AM, s6517714 said:

OK i post only xml and nif file to you  the textures you should  download from the youtube website of the dint. After all, these files are from the great work of the dint.

 

P.S. Remember to change the Nistringdata location

00 Hair.7z

 

Hi, s6517714, I was wondering if you could provide the zip file again for the xml and nif files for DINT wigs? The link provided no longer works.  I'm new to this and would like the assistance thanks.

Link to comment
20 hours ago, darkeknight007 said:

 

Hi, s6517714, I was wondering if you could provide the zip file again for the xml and nif files for DINT wigs? The link provided no longer works.  I'm new to this and would like the assistance thanks.

it still works ,you can try again

 

Link to comment
  • 2 weeks later...

somebody please split up hair17 mesh for >80 nodes per shape for sse usage, im to retarded for that. else have fun with this xml in le.

 

hair17.xml

 

If you want to use collisions you need to prepare the mesh, paste In xpmse, paste the nodes in the right hierarchy, paste in proxies.

uncomment the collision part In the xml and add a part for proxies.

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. For more information, see our Privacy Policy & Terms of Use